2016-10-16 2 views
0

Я пытался следовать примеру в документации по индексации единого документа:Elasticsearch geo_point query_parsing_exception

curl -XPUT 'localhost:9200/graph/nodes/1' -d' 
{   
    "pin" : { 
     "location" : { 
      "lat" : 40.12, 
      "lon" : -71.34 
     } 
    } 
} 
' 

Это дает отображение:

{ 
    "graph" : { 
    "mappings" : { 
     "nodes" : { 
     "properties" : { 
      "location" : { 
      "type" : "double" 
      }, 
      "pin" : { 
      "properties" : { 
       "location" : { 
       "properties" : { 
        "lat" : { 
        "type" : "double" 
        }, 
        "lon" : { 
        "type" : "double" 
        } 
       } 
       } 
      } 
      }, 
      "text" : { 
      "type" : "string" 
      } 
     } 
     } 
    } 
    } 
} 

Когда я пытаюсь запросить по расстоянию от точки он дает такую ​​ошибку:

failed to find geo_point field [pin.location] 

Вопрос, который я даю, это следующее:

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

Я не уверен, где я поступил неправильно, поэтому любой совет будет замечательным!

Заранее спасибо

ответ

1

Чтобы использовать Geo запросов, ваше местоположение должно быть geo_point или geo_shape типа.

изменить отображение на

"pin" : { 
     "properties" : { 
      "location" : { 
       "type" : "geo_point" 
       } 
      } 
     } 
+0

Спасибо это работает! –

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