我有一個包含對象eventvalue-eventtime的索引。我想編寫一個查詢,該查詢將返回最近30秒內基於eventvalue的聚合事件計數。另外,如果在給定的秒數內沒有事件,我需要空桶 - 我需要在圖上顯示這些數據。elasticsearch中的範圍查詢無法正常工作
所以我寫了下面的查詢:
{
"query" : {
"bool" : {
"must" : [
{
"range" : {
"eventtime" : {
"gte" : "now-30s/s",
"lte" : "now/s",
"format" : "yyyy-MM-dd HH:mm:ss",
"time_zone": "+03:00"
}
}
},
{
"range" : {
"eventvalue" : {
"lte" : 3
}
}
}
]
}
},
"aggs": {
"values_agg": {
"terms": {
"field": "eventvalue",
"min_doc_count" : 0,
"order": {
"_term": "asc"
}
},
"aggs": {
"events_over_time" : {
"date_histogram" : {
"field" : "eventtime",
"interval" : "1s",
"min_doc_count" : 0,
"extended_bounds" : {
"min" : "now-30s/s",
"max" : "now/s"
},
"format" : "yyyy-MM-dd HH:mm:ss",
"time_zone": "+03:00"
}
}
}
}
}
}
該查詢不能正常工作,我不知道爲什麼。具體來說,第一個「範圍」查詢給我期望的時間間隔(如果我刪除它,我從所有時間獲得值)。但第二個「範圍」查詢似乎沒有效果。 Eventvalue的值可以是1到10之間的任何值,並且期望的效果是我將有三個存儲桶用於事件值1-3。不過,我得到所有事件的10個桶。
我該如何解決這個查詢,所以它仍然返回空桶,但只爲選定evenvalues?
您可以檢查映射'eventvalue',讓我們知道它是什麼設置? ('string','long'或'double') –
@Weinberger eventvalue是整數。 – Alex