Запрос ElasticSearch для всех документов с географической точкой, которая пересекает / находится в индексированной гео-форме
У меня есть коллекция geo_shapes, извлеченная из файла формы, который я проиндексировал в ES. У меня также есть большой индекс документов с geo_points. Я пытаюсь выполнить запрос, который возвращает все документы, которые имеют точку в geo_shape, но продолжают возвращать ноль результатов.
Я почти уверен, что сопоставления верны, потому что я могу выполнить запрос определенного lat / long и успешно вернуть geo_shape, в котором он находится. Я также могу выполнить поиск в ограничивающей рамке документов с помощью geo_points и успешно вернуть список документов, которые соответствуют.
Вот отображение для моих geo_shapes:
{
"geometry":{
"properties": {
"type": "geo_shape",
"tree":"quadtree"
}
}
}
и это отображение для документов с geo_points:
{
"docs":{
"location":{
"properties":{
"coordinates":{
"type":"geo_point",
"geohash":true
}
}
}
}
}
запрос, который я пытаюсь выполнить:
{"query":
"geo_shape": {
"location": {
"indexed_shape": {
"id": "shape_id",
"type": "locations",
"index": "index_name",
"path": "geometry"
}
}
}
Я выполняю запрос к определенному индексу / типу, который содержит документы с geo_points. Если я запускаю его для всего индекса, возвращается только документ geo_shape.
1 ответ
Чтобы это работало, местоположения в вашем втором индексе должны быть отображены как geo_shape
(тип = Точка), а также (не geo_point
), как это:
{
"locations": {
"location": {
"properties": {
"coordinates": {
"type": "geo_shape",
"tree": "quadtree",
"precision": "1m"
}
}
}
}
}
Тогда ваш geo_shape
запрос, работающий с предварительно проиндексированными фигурами, будет работать как положено