Anonymous
Фильтр диапазона дат не исключается из гистограммы дат при глобальных агрегациях в эластичном запросе
Сообщение
Anonymous » 10 янв 2025, 11:13
У меня есть эластичный запрос, как показано ниже:
Код: Выделить всё
{
"query": {
"bool": {
"must": [
{
"multi_match": {
"query": "my search term",
"fields": [
"title",
"keywords",
"text"
]
}
}
],
"filter": [
{
"terms": {
"catid": [
83
]
}
},
{
"range": {
"updateDate": {
"gte": "now/d-30d",
"lte": "now/d"
}
}
}
]
}
},
"aggs": {
"global_aggregation": {
"global": {},
"aggs": {
"filtered_aggregation": {
"filter": {
"bool": {
"must": [
{
"multi_match": {
"query": "my search term",
"fields": [
"title",
"keywords",
"text"
]
}
},
{
"terms": {
"status": [
2
]
}
}
]
}
},
"aggs": {
"by_time_period": {
"date_histogram": {
"field": "updateDate",
"calendar_interval": "quarter",
"format": "yyyy-MM-dd",
"order": {
"_key": "desc"
}
},
"aggs": {
"top_hits_per_bucket": {
"top_hits": {
"size": 10,
"_source": [
"title",
"msid",
"keywords",
"updateDate"
]
}
}
}
}
}
}
}
}
},
"size": 0,
"_source": [
"title",
"msid",
"keywords",
"updateDate"
]
}
Теперь проблема в том, что в агрегированных результатах я получаю date_histogram для результатов только за последние 30 дней, но глобальные агрегации должны игнорировать запрос диапазона в основном поиске.
Что я могу сделать, чтобы исправить этот запрос?
Если я удалю фильтр диапазона из основного запроса, я получу гистограммы дат за все прошлые годы с начала
Подробнее здесь:
https://stackoverflow.com/questions/793 ... l-aggregat
1736496796
Anonymous
У меня есть эластичный запрос, как показано ниже: [code]{ "query": { "bool": { "must": [ { "multi_match": { "query": "my search term", "fields": [ "title", "keywords", "text" ] } } ], "filter": [ { "terms": { "catid": [ 83 ] } }, { "range": { "updateDate": { "gte": "now/d-30d", "lte": "now/d" } } } ] } }, "aggs": { "global_aggregation": { "global": {}, "aggs": { "filtered_aggregation": { "filter": { "bool": { "must": [ { "multi_match": { "query": "my search term", "fields": [ "title", "keywords", "text" ] } }, { "terms": { "status": [ 2 ] } } ] } }, "aggs": { "by_time_period": { "date_histogram": { "field": "updateDate", "calendar_interval": "quarter", "format": "yyyy-MM-dd", "order": { "_key": "desc" } }, "aggs": { "top_hits_per_bucket": { "top_hits": { "size": 10, "_source": [ "title", "msid", "keywords", "updateDate" ] } } } } } } } } }, "size": 0, "_source": [ "title", "msid", "keywords", "updateDate" ] } [/code] Теперь проблема в том, что в агрегированных результатах я получаю date_histogram для результатов только за последние 30 дней, но глобальные агрегации должны игнорировать запрос диапазона в основном поиске. Что я могу сделать, чтобы исправить этот запрос? Если я удалю фильтр диапазона из основного запроса, я получу гистограммы дат за все прошлые годы с начала Подробнее здесь: [url]https://stackoverflow.com/questions/79344994/date-range-filter-not-getting-excluded-from-date-histogram-under-global-aggregat[/url]