我有一个要求,我需要在每个区域和地区根据给定日期来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"
}
}
}
}
}
}
}
这应该工作得很好,为什么你觉得它不给正确的结果呢? –
在日期字段之间的术语过滤器将不会主要工作,但然后我只能看到映射后也可以告诉任何东西 –
其实,ES说有一些语法错误..我需要得到的具体日期或日期的细节..我已经尝试了一个更多的查询..你可以请检查问题和建议.. @Vineeth Mohan – santoshM