Elasticsearch在不同的时间范围内多次聚合



我试图按照查询中给定的时间范围的每一半来聚合一个字段。例如,以下是查询:

{
"query": {
"simple_query_string": {
"query": "+sitetype:(redacted) +sort_date:[now-2h TO now]"
}
}
}

并且我想在术语";product1.keyword";从现在-2h到现在-1h并且在相同的项上聚集";product1.keyword";从现在到现在,比如:

"terms": {
"field": "product1",
"size": 10,
}

^在now-2h到now-1h内聚合product1的前10个结果,并在现在到现在的1小时内汇总product1的前10个结果。

澄清:product1不是与日期或时间相关的字段。它就像一种汽车、电话等。

如果您想在查询中使用now,您必须将product1字段设置为date类型,然后您可以尝试如下:

GET index1/_search
{
"size": 0,
"aggs": {
"dataAgg": {
"date_range": {
"field": "product1",
"ranges": [
{
"from": "now-2h",
"to": "now-1h"
},
{
"from": "now-1h",
"to": "now"
}
]
},
"aggs": {
"top10": {
"top_hits": {
"size": 10
}
}
}
}
}
}

如果不能更改product1的类型,可以尝试rang-agg,但必须显式写入时间,而不是使用now

最新更新