2014-10-17 2 views
1

Так что я экспериментирую с ElasticSearch, и это то, что я сделал.Почему я не могу запросить геолокацию в поиске эластичности?

1) Добавлено отображение geo_point на мой индекс, называемый "тест"

curl -XPOST localhost:9200/test -d '{ 
    "mappings" : { 
     "type1" : { 
      "_source" : { "enabled" : false }, 
      "properties" : { 
       "location" : { "type" : "geo_point", "index" : "not_analyzed" } 
      } 
     } 
    } 
}' 

2) индексируются документ под тест:

curl -XPUT 'localhost:9200/test/type1/1?pretty' -d '{ 
"location" : { 
       "lat" : 74,   
       "lon" : 90    
       }      
}' 

3) Затем написал запрос по геолокации фильтра, как это :

curl -XPOST 'localhost:9200/test2/_search?pretty' -d '{ 
    "filtered" : { 
     "query" : { 
      "match_all" : {} 
}, 
     "filter" : { 
      "geo_distance" : { 
       "distance" : "200km", 
       "location" : { 
        "lat" : 40, 
        "lon" : -70 
       } 
      } 
     } 
    } 
}' 

Для этого я получаю:

«error»: «SearchPhaseExecutionException [Не удалось выполнить фазу [запрос], все осколки не пройдены; shardFailures {[QpGEHtdcReeYmt8X2tG26g] [test2] [0]: RemoteTransportException [[Jester] [inet [/10.58.91.21:9301]] [поиск/фаза/запрос]]; inested: SearchParseException [[test2] [0]: from [-1], size [-1]: Parse Ошибка [Не удалось проанализировать источник [na]]]; inested: ElasticsearchParseException [Не удалось получить xcontent с [email protected]c76];

+0

Вы в состоянии выполнять простые запросы без гео вещи? – Thorsten

+0

Да, первые два преуспели. Но третий терпит неудачу. – Phoenix

ответ

0

Во-первых, в запросе (т.е. третий кусок кода), localhost:9200/test2/_search?pretty должен быть localhost:9200/test/_search?pretty, то есть вы не запрашивая правильный индекс.

Тогда ваш запрос просто отсутствует query ключевое слово (т.е. filtered должен быть заключен в query), он должен выглядеть следующим образом:

curl -XPOST 'localhost:9200/test/_search?pretty' -d '{ 
    "query": { 
     "filtered": { 
      "query": { 
       "match_all": {} 
      }, 
      "filter": { 
       "geo_distance": { 
        "distance": "200km", 
        "location": { 
         "lat": 40, 
         "lon": -70 
        } 
       } 
      } 
     } 
    } 
} 
Смежные вопросы