Я новичок в ElasticSearch (использую версию 7.6) и пытаюсь выяснить, как искать между двумя периодами времени. Один запрос, который я пробую, это запрос 12-й недели 2019 года и 12-й недели 2020 года. Идея состоит в том, чтобы сравнить результаты. Читая документацию и ища образцы, я приблизился к тому, что искал.
Самый простой способ - запустить два запроса с разными датами. Но я бы хотел ограничить количество запросов. Последний запрос, который я написал на основе чтения документов, использует агрегаты , но я не уверен, что это правильный путь:
GET sample-data_*/_search/
{
"query": {
"bool": {
"must": [
{
"range": {
"@timestamp": {
"gte": "2020-03-20 08:00:00",
"lte": "2020-03-27 08:00:00"
}
}
}
]
}
},
"aggs": {
"range": {
"date_range": {
"field": "date",
"format": "8yyyy-MM-dd",
"ranges": [
{
"from": "2019-03-20",
"to": "2019-03-27",
"key": "last_years_week"
},
{
"from": "2020-03-20",
"to": "2020-03-27",
"key": "this_years_week"
}
],
"keyed": true
}
}
}
}
Результаты приходят в затем следуют агрегаты , но они не содержат данных, которые я ищу. Возвращается один из результатов:
{
"_index" : "sample-data_2020_03_26",
"_type" : "_doc",
"_id" : "JyhcfWFFz0s1vwizjgxh",
"_score" : 1.0,
"_source" : {
"@timestamp" : "2020-03-26 00:00:00",
"name" : "TEST0001",
"count" : "150",
"total" : 3000
}
}
...
"aggregations" : {
"range" : {
"buckets" : {
"last_years_week" : {
"from" : 1.55304E12,
"from_as_string" : "2019-03-20",
"to" : 1.5536448E12,
"to_as_string" : "2019-03-27",
"doc_count" : 0
},
"this_years_week" : {
"from" : 1.5846624E12,
"from_as_string" : "2020-03-20",
"to" : 1.5852672E12,
"to_as_string" : "2020-03-27",
"doc_count" : 0
}
}
}
}
Мой вопрос: какой может быть эффективный способ запроса данных между двумя датами разных лет с использованием ElasticSearch, чтобы их можно было использовать для сравнения чисел?
Я был бы рад узнать больше о сложном для меня запросе ElasticSearch, если бы вы указали мне правильное направление.
Спасибо!