Я пытаюсь построить запрос ES для диапазона вокруг целевого числа. Например, если бы я ввел 10000, мне нужно было бы 1000 результатов с # 10000 посередине. Проблема в том, что результаты не полны, т.е. может быть что-то со значением 9999, а может и не быть, поэтому я не могу просто искать между 9500 и 10500. Мой подход заключался в выполнении двух разных запросов, один с размером 500 находил все значения меньше или равные 10000 и отсортированы по убыванию, а второй запрос размером 500 находит все значения больше 10000 и отсортирован по возрастанию. К сожалению, это не работает так, как я хочу, и я вообще не получаю # 10000. Мои запросы выглядят так:
query1 = {
'size': 500,
'sort': [{'id': {'order': 'desc', 'unmapped_type': 'boolean'}}],
'query': {
'bool': {
'filter': [
{'match_phrase': {'group_id': int(request.args['group'])}},
{'range': {'id': {'lte': int(request.args['id'])}}}
]
}
}
}
query2 = {
'size': 500,
'sort': [{'id': {'order': 'asc', 'unmapped_type': 'boolean'}}],
'query': {
'bool': {
'filter': [
{'match_phrase': {'group_id': int(request.args['group'])}},
{'range': {'id': {'gt': int(request.args['id'])}}}
]
}
}
}
Как я могу заставить это работать?