Я работаю над запросом, который должен выполнить следующее, и мне в первую очередь интересно:
- Можно ли сделать это как один запрос?
- Если нетМогу ли я выполнить запрос с несколькими запросами и вернуть один набор неповторяющихся документов, или мне нужно выполнить дедупликацию вне запроса ES?
Вот что я на самом деле пытаюсьdo:
Запрос 1 - ограничивающий прямоугольник + оценка
У меня есть набор суставов пиццы в экземпляре эластичного поиска с метаданными, включая широту / длину пиццерии.
Каквходные данные для запроса, у меня есть северо-западный и юго-восточный углы ограничительной рамки.
Я хочу вернуть все пиццерии внутри ограничительной рамки и назначить им оценку 100.
Запрос 2 - ограничивающий прямоугольник + расчет расстояния
Из первого ограничивающего прямоугольника я генерирую второй ограничивающий прямоугольник, который на 20% больше (от центра входного ограничивающего прямоугольника) во всех направлениях.
Я хочу вернуть все пиццерии в пределах этого большего ограниченияи дайте им оценку от 0 до 99, чтобы они набрали больше баллов, чем ближе они находятся к центру этой большой ограничительной рамки.
Объединение их вместе
Мой финалВ результате получается, что мне нужен единый список всех документов, отсортированных по баллам:
- Где оценка всех пиццерий во внутренней ограничительной рамке равна 100
- И оценка всехсуставы пиццы, которые находятся во внешней ограничительной рамке , но не в внутренней ограничительной рамке, имеют оценку, назначенную на основе расстояния
- Два списка объединены в один, без повторяющихся документов, отсортированных пооценка по убыванию
Итак ...
Похоже, что это должны быть два отдельных запроса, потому что скоринг! = фильтрация, и части ограничивающего прямоугольника выглядят как фильтр, гдеОзвучивание отдельно. Из того, что я могу сказать, нет никакого способа сделать все следующее в одном запросе:
- Внутренняя ограничивающая рамка + оценка
- Внешняя ограничивающая рамка + оценка
- комбинированный, дедуплицированный список