Я пытаюсь использовать функциональность упругого поиска Geo Bounding Box, чтобы возвращать результаты в моем поле выбора. Я получаю координаты границы из Карт Google, и они в формате NorthEast и SouthWest.
Это пример дампа параметров, передаваемых клиенту phpasticsearch (преобразован в JSON для удобства чтения):
{
"index":"MyIndex",
"body":{
"query":{
"bool":{
"must":{
"match_all":{
}
},
"filter":{
"geo_bounding_box":{
"location":{
"top_right":{
"lat":53.2323104,
"lon":6.704821
},
"bottom_left":{
"lat":52.3136724,
"lon":4.311799
}
}
}
}
}
}
}
}
Вот несколько примеров результатов, которые находятся в ES, и я получаю их, когда я делаю обычный простой поиск (без гео / ограничивающего прямоугольника):
[
{
"object_id":14396,
"object_type":"POI",
"location":{
"lat":53.05194,
"lon":5.38417
}
},
{
"object_id":24046,
"object_type":"POI",
"location":{
"lat":52.52711,
"lon":5.06319
}
},
{
"object_id":24680,
"object_type":"POI",
"location":{
"lat":52.72525,
"lon":4.96201
}
}
]
Я считаю, что все они должны быть возвращены ограничивающим поиском, что мне здесь не хватает?
Изменить: включено отображение ниже
{
"MyIndex":{
"mappings":{
"pois":{
"properties":{
"object_id":{
"type":"string"},
"object_type":{
"type":"string"},
"location":{
"type":"geo_point"},
}
},
}
}
}
Редактировать 2: необработанный ответ с данными в ES:
{
"_index":"MyIndex",
"_type":"pois",
"_id":"14916",
"_score":1,
"_source":{
"object_id":"14916",
"object_type":"POI",
"location":{
"lat":53.13915,
"lon":6.19422
}
}
}
Задача ещё не решена.
Других решений пока нет …