2015-09-04 90 views
0

我有一個要求,我需要在每個區域和地區根據給定日期來groupby status_value。對於同樣的我寫了一個查詢,它不完全在ES中工作。如果有人對此進行研究並向我提供解決方案,這將是一個很大的幫助。在彈性搜索中的多個字段上的groupby功能

注意:我想得到最後一天(即前一天)的結果。

{ 
    "query": { 
    "filtered": { 
     "query": { 
     "match_all": {} 
     }, 
     "filter": { 
     "term": { 
      "UsagePoint_Asset_lifecycle_installationDate": "2014-07-13T16:55:00.0-07:00" 
     } 
     } 
    } 
    }, 
    "aggs" : { 
     "product" : { 
      "terms" : { 
       "field" : "UsagePoint_ServiceLocation_region" 
      }, 
      "aggs" : { 
       "material" : { 
        "terms" : { 
         "field" : "UsagePoint_status_value" 
        } 
       } 
      } 
     }  
    } 
} 

我的SQL查詢可能會象下面這樣:

select count(status_value) 
from products 
where date = "yesterday" 
group by region , date 

請檢查下面的查詢工作,但我想獲得的值特定日期或日期。

{ 
    "agg1": { 
     "terms": { 
      "field":"UsagePoint_Asset_lifecycle_installationDate" 
     }, 
     "aggs" : { 
     "product" : { 
      "terms" : { 
       "field" : "UsagePoint_ServiceLocation_region" 
      }, 
      "aggs" : { 
       "material" : { 
        "terms" : { 
         "field" : "UsagePoint_status_value" 
        } 
       } 
      } 
     }  
    } 
    } 
} 
+0

這應該工作得很好,爲什麼你覺得它不給正確的結果呢? –

+0

在日期字段之間的術語過濾器將不會主要工作,但然後我只能看到映射後也可以告訴任何東西 –

+0

其實,ES說有一些語法錯誤..我需要得到的具體日期或日期的細節..我已經嘗試了一個更多的查詢..你可以請檢查問題和建議.. @Vineeth Mohan – santoshM

回答

1

如果您需要按昨天的信息組,以下是解決方案。 對於任何其他自定義日期,在GTE更改值(大於或等於)和LT(小於)

{ 
    "query": { 
    "filtered": { 
     "query": { 
     "match_all": {} 
     }, 
     "filter": { 
     "range": { 
      "UsagePoint_Asset_lifecycle_installationDate": { 
      "gte": "now-1d", 
      "lt": "now" 
      } 
     } 
     } 
    } 
    }, 
    "aggs": { 
    "product": { 
     "terms": { 
     "field": "UsagePoint_ServiceLocation_region" 
     }, 
     "aggs": { 
     "material": { 
      "terms": { 
      "field": "UsagePoint_status_value" 
      } 
     } 
     } 
    } 
    } 
} 
+0

嗨,上面的查詢是完全匹配我的要求。但是,由於ES版本,可能會導致一個挑戰。當我在ES中運行這個查詢時,它會拋出下面的錯誤。你可以請檢查並幫助.. – santoshM

+0

由org.elasticsearch.search.SearchParseException:[work_orders] [4]:from [0],size [100]:Parse Failure [Could not find aggregator type [filtered] in [查詢] – santoshM