Как я могу искать документы, основанные на нескольких географических точках в эластичном поиске? - PullRequest
0 голосов
/ 14 октября 2019

У меня есть сценарий использования, в котором я хочу искать документы с несколькими географическими точками.

{
  "query": {
    "bool": {
      "must": {
        "match_all": {}
      },
      "filter": {
        "geo_distance": {
          "distance": "100m",
          "nc_extraData.nc_geoPoint": {
            "lat": 21.36042723377568,
            "lon": -5.646749208228298
          }
        }
      }
    }
  }
} 

Этот запрос поддерживает только один геопункт. Возможно ли это.

Ответы [ 2 ]

1 голос
/ 14 октября 2019

Вы можете добавить несколько geo_distance ограничений с разными географическими точками. Вы также можете узнать, какая точка соответствует, используя именованные запросы :

{
  "query": {
    "bool": {
      "should": [
        {
          "geo_distance": {
            "distance": "100m",
            "nc_extraData.nc_geoPoint": {
              "lat": 21.36042723377568,
              "lon": -5.646749208228298
            },
            "_name": "point 1"
          }
        },
        {
          "geo_distance": {
            "distance": "100m",
            "nc_extraData.nc_geoPoint": {
              "lat": 22.36042723377568,
              "lon": -6.646749208228298
            },
            "_name": "point 2"
          }
        },
        {
          "geo_distance": {
            "distance": "100m",
            "nc_extraData.nc_geoPoint": {
              "lat": 23.36042723377568,
              "lon": -7.646749208228298
            },
            "_name": "point 3"
          }
        }
      ]
    }
  }
}
0 голосов
/ 15 октября 2019
  "query": {
    "bool": {
      "should": [
        {
          "geo_distance": {
            "distance": "6000km",
            "nc_extraData.nc_geoPoint": {
              "lat": 39.783181787374076,
              "lon": -100.72051270885312
            },
            "_name": "point 1"
          }
        },
        {
          "geo_distance": {
            "distance": "6000km",
            "nc_extraData.nc_geoPoint": {
              "lat": 39.73750007106965,
              "lon": -90.00078544604122
            },
            "_name": "point 2"
          }
        },
         {
          "geo_distance": {
            "distance": "1000m",
            "nc_extraData.nc_geoPoint": {
              "lat": 60.73750007106965,
              "lon": -90.00078544604122
            },
            "_name": "point 3"
          }
        }
      ]
    }
  }
}```

I am trying this query. But the matching query contains both ``` "matched_queries": [
                    "point 2",
                    "point 1"
                ]``


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