2014-02-21 4 views
1

Я пытаюсь настроить объект geo_point на ES 1.0.0 и запускать простое доказательство концептуального запроса против него, но запрос не возвращает никаких ударов. Вот мои шаги установки:ElasticSearch Как настроить geo_point

1) Создать отображение:

PUT jay/geotest/_mapping 
{ 
    "geotest" : { 
     "properties" : { 
      "name" : { 
       "type" : "string" 
      }, 
      "pin" : { 
       "type": "geo_point" 
      } 
     } 
    } 
} 

2) проверить отображение:

GET jay/geotest/_mapping 

3) Добавить часть данных

put jay/geotest/1 
{ 
    "name": "test1", 
    "pin": { 
     "lat": 0, 
     "lon": 0 
    } 
} 

4) запрос для этих данных:

GET jay/geotest/_search?search_type=count 
{ 
    "filtered" : { 
     "filter" : { 
      "geo_distance" : { 
       "distance" : "100km", 
       "pin" : { 
        "lat" : 0, 
        "lon" : 0 
       } 
      } 
     } 
    } 
} 

Ожидаемый результат: я вернусь к одному удару, но вместо этого ничего не возвращается.

Заранее благодарен!

+0

Кажется, вы работаете с этим: http://www.elasticsearch.org/guide/en/elasticsearch/reference/master/query-dsl-geo-distance-filter.html. Есть ли причина, по которой вы отказались от части запроса (match_all)? – SurrealAnalysis

+0

«match_all» является неявным и, следовательно, не требуется с ES. Я попытался добавить его только для двойной проверки, и я по-прежнему не получаю никаких результатов. – jhilden

ответ

1

Я думаю, что вам не хватает «запроса» части запроса.

POST jay/geotest/_search 
{ 
    "query": { 
     "filtered": { 
     "filter": { 
      "geo_distance": { 
       "distance": "100km", 
       "pin": { 
        "lat": 0, 
        "lon": 0 
       } 
      } 
     } 
     } 
    } 
} 

Я только что проверил ваши шаги и внесение этих изменений возвращает документ.

+0

Вот и все! Спасибо Акшай! – jhilden

Смежные вопросы