Привет, я новичок в Elasticsearch и пытаюсь реализовать решение, используя spring-data-elasticsearch
. Мои проиндексированные данные выглядят так:
[
{
"worker": "A",
"availability": [
{
"startDate": "2020-01-12",
"endDate": "2020-02-12"
},
{
"startDate": "2020-04-12",
"endDate": "2020-05-12"
}
]
},
{
"worker": "B",
"availability": [
{
"startDate": "2020-04-12",
"endDate": "2020-11-12"
}
]
}
]
Ссылаясь на эластичные документы, я планировал использовать запрос диапазона для получения записей за указанный диапазон дат, например, я хотел получить доступного рабочего с 12 мая 2020 года по 12 июня 2020 года. Это запрос, который я сформировал:
{
"query": {
"bool": {
"must": [
{
"nested": {
"query": {
"range": {
"availability.start_date": {
"from": "2020-05-12T00:00:00.000Z",
"to": "2020-06-12T00:00:00.000Z",
"include_lower": true,
"include_upper": true,
"boost": 1.0
}
}
},
"path": "availability",
"ignore_unmapped": false,
"score_mode": "none",
"boost": 1.0
}
}
],
"adjust_pure_negative": true,
"boost": 1.0
}
}
}
Приведенный выше запрос показывает пустые совпадения при его выполнении, но когда я использую проиндексированные даты, я могу получить записи (например, если я укажу даты с 2020-04-12 по 2020-11-12, рабочий результат B отображаются). Согласно запросу диапазона, это должно было сработать и для моего более раннего случая, если я не ошибаюсь. Есть ли что-то неправильное в подходе, которому я следовал. Пожалуйста посоветуй.