У меня есть ряд документов, с которыми, кроме других полей, связано количество geo_point
s.Я хочу найти все документы, которые связаны с конкретным городом.Для этого у меня также есть индекс городов, я сначала ищу его и получаю список координат с _score
s из этого поиска.Теперь я хочу передать эти данные в поиск документов и умножить оценку найденных документов на соответствующую оценку города.
Предполагая, что первый запрос возвращает список кортежей типа [(city_coords, city_score), (...)]
, я хочу построитьзапросить индекс документа, используя function_score
и массив functions
, где каждый город является отдельной функцией с отдельной оценкой.
Однако, когда я строю запрос в его простейшей форме, он выбирает все документы в моем индексе.Вот какой запрос я сделал:
{
'query': {
'function_score': {
'functions': [
{
"filter": {
"geo_distance": {
"distance": "1km",
"distance_type": "plane",
"points": city_coords
},
},
'weight': city_score
}
]
}
}
}
Я что-то упустил?Как получить только документы, связанные с этим конкретным городом?