Я индексировали ряд документов в моей базе данных Elasticsearch и когда я запрашиваю для всех них я вижу, что они имеют структуру, как это:Elasticsearch найти документы по местоположению
GET http://localhost:9200/restaurants/restaurant/_search
Выход:
{
"took": 4,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"failed": 0
},
"hits": {
"total": 362,
"max_score": 1,
"hits": [
{
"_index": "restaurants",
"_type": "restaurant",
"_id": "2",
"_score": 1,
"_source": {
"businessName": "VeeTooNdoor Dine",
"geoDescription": "Right next to you2",
"tags": {},
"location": {
"lat": -33.8917007446,
"lon": 151.1369934082
}
}
},
...
]
}
}
Теперь я хочу найти рестораны вокруг данного географического местоположения и следуя документации [1] Я использую что-то вроде этого:
{
"filtered" : {
"query" : {
"match_all" : {}
},
"filter" : {
"geo_distance" : {
"distance" : "1km",
"location" : {
"lat": -33.8917007446,
"lon": 151.1369934082
}
}
}
}
}
Вещь, которую я изменил, это match_all
, так как я не хочу указывать какое-либо поле поиска, в частности, меня интересует только географическое местоположение.
Когда я выполнить запрос, я получаю следующее сообщение:
"error": "SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[olAoWBSJSF2XfTnzEhKIYA][btq][3]: SearchParseException[[btq][3]: from[-1],size[-1]: Parse Failure [Failed to parse source [{\n \"filtered\" : {\n \"query\" : {\n \"match_all\" : {}\n },\n \"filter\" : {\n .....
Теперь я заметить следующее на странице учебника:
Обновление: автоматическое отображение «гео включено» свойств был отключен после публикации этой статьи. Вы должны предоставить правильное отображение для гео-свойств . См. Документацию.
Это создает впечатление, что мне нужно создать «сопоставление», которое задает типы полей. Однако в документе, который он ссылается, не дает мне достаточно информации о том, как это сделать на самом деле. Он показывает blobs JSON, но я не уверен в правильности URL для этого.
Кроме того, я использую PHP-клиент, и я не уверен, поддерживает ли он отображение, как это показано в этой прогулке через [2].
У меня как-то создается впечатление, что в запрос DSL и т. Д. Внесено немало изменений и что многие примеры в Интернете больше не работают, я могу ошибаться. Я использую Elasticsearch 1.0.0.
[1] http://www.elasticsearch.org/blog/geo-location-and-search
[2] http://blog.qbox.io/elasticsearch-aggregations
Hi. Спасибо за это. «Пинком» в примере кода была ошибка копирования, я удалил ее, ее не было в моем фактическом коде. Я думаю, что вы говорите о том, что отображение не является правильным. Тем не менее, я понятия не имею, как на самом деле создавать сопоставление либо из cURL, либо из клиента PHP API. Не могли бы вы рассказать об этом? Кроме того, какую версию Elasticsearch вы используете? – Luke
см. Мое обновление выше – mconlin