ElasticSearch Как выполнить запрос диапазона расстояний вместе с запросом bool? - PullRequest
0 голосов
/ 10 июня 2019

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 не сможет найти никаких документов.

Итак, пожалуйста, предложите, что мне нужно сделать?Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...