Как использовать гео-запросasticsearch для получения документов с расстоянием более x километров - PullRequest
2 голосов
/ 30 апреля 2019

Привет, я работаю над приложением, в котором мне нужно отобразить места из предоставленной широты и долготы на основе фильтра расстояний. Я обслуживаю данные из упругого поиска. Я могу легко обслуживать данные, используя запрос geo_distance для поиска документов с географическими точками в пределах указанного расстояния от центральной точки. Но я не могу найти данные больше, чем х километров

Эластичная поисковая версия - 6,6

Отображение -

{
  "mappings": {
  "_doc": {
   "properties": {
     "location": {
       "type": "geo_point"
      }
    }
  }
 }
}

Чтобы получить места менее x километров, я использую этот запрос

{
 "query": {
    "bool" : {
        "filter" : {
            "geo_distance" : {
                "distance" : "15km",
                "location" : {
                    "lat"  : 40.1111,
                    "lon"  : 40.1111 
                }
             }
         }
      }
   }
}

Какой запрос использовать для получения результатов, превышающих x км, предоставляет ли геофильтр какой-либо параметр запроса для получения данных, превышающих расстояние x? Могу ли я использовать фильтр в сочетании с must_not?

1 Ответ

2 голосов
/ 30 апреля 2019

Вам просто нужно заменить filter на must_not, и это даст то, что вам нужно:

{
 "query": {
    "bool" : {
        "must_not" : {
            "geo_distance" : {
                "distance" : "15km",
                "location" : {
                    "lat"  : 40.1111,
                    "lon"  : 40.1111 
                }
             }
         }
      }
   }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...