Я храню данные в базе данных elasticsearch и пытаюсь запросить их, отфильтровав по диапазону чисел.
Это минимизированная структура документа в моей базе данных:
"a": {
"b": {
"x": [1, 2, 3, 4], // note: x, y and z are not compulsory
"y": [2, 3, 4], // some documents can have only x or z or maybe x and z etc.
"z": [5, 6]
}
}
Теперь я хочу, чтобы мой запрос возвращал все документы, где в любом из подполей «b» есть хотя бы одно число в диапазоне от 2 до 4. Здесь важно то, что я не знаю имена всех подполей « б".
Я придумал запрос:
POST /i/t/_search
{
"query": {
"query_string": {
"fields": ["a.b.*"],
"query": "number:[2 TO 4]"
}
}
}
Запрос не выдает ошибку, но и не возвращает результата. Я даже не уверен, какой тип поискового запроса будет наиболее подходящим для такой задачи. Я использовал только строку запроса, потому что только в ней я мог соединить неизвестное имя поля и диапазон.