In ElasticSearch Как выполнить запрос диапазона расстояний наряду с обычным bool-запросом?
Я хочу найти все документы, попадающие в диапазон, например, диапазон от 80 до 1600 км.Но сначала он должен соответствовать игле на 80 км, если не найдено, затем увеличьте ее до 300 км, затем до 800 км и т. Д. До 1600 км.
Я использую текущую версию ElasticSearch v7.1 и с этого момента geo_distance_range запрос удален.Поэтому мне нужно знать, как задать расстояние нижней и верхней границы диапазона (от-до предложения).Я пытался выяснить, как использовать разбиение на страницы или агрегацию в моей голове, но до сих пор не понял, что агрегация здесь просто не так, и использование разбиения на страницы дает мне неподдерживаемую ошибку в конце ElasticSearch.
I 'вставляем фрагмент ниже:
сопоставления (надумано)
{
"mappings: {
"driver_service": {
"properties": {
"location": {
"type": "geo_point"
}
}
}
}
}
запрос
{
"query": {
"bool": {
"should": [],
"must_not": [],
"filter": [
{
"geo_distance": {
"distance": "80km",
"distance_type": "arc", // or "plane"
"location": {
"lat": // latitude value,
"lon": // longitude value
}
}
},
{
"geo_distance": {
"distance": "300km",
"distance_type": "arc", // or "plane"
"location": {
"lat": // latitude value,
"lon": // longitude value,
}
}
},
{
"geo_distance": {
"distance": "800km",
"distance_type": "arc", // or "plane"
"location": {
"lat": // latitude value,
"lon": // longitude value,
}
}
},
{
"geo_distance": {
"distance": "1600km",
"distance_type": "arc", // or "plane"
"location": {
"lat": // latitude value,
"lon": // longitude value,
}
}
}
]
}
}
}
Этот запроссмог найти те документы, которые имеют точные лат-длинные совпадения.Но если я хочу найти все документы в регионе или городе, то не удается найти совпадение.Например, если я ищу «Окленд, США» или «Сакраменто, Калифорния, США», ElasticSearch находит некоторые документы.Но если я попробую "Калифорния, США" или просто "США", ElasticSearch не сможет найти никаких документов.
Итак, пожалуйста, предложите, что мне нужно сделать?Заранее спасибо.