2015-09-04 113 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