Elasticsearch和geo_shape

时间:2015-05-07 14:54:10

标签: elasticsearch

我尝试使用 elasticsearch 1.1.2 向现有应用添加一些地理要素。此应用程序有一些person,其中一个属性pin代表地理定位点。

以下是映射:

{"person":{"properties":{"pin":{"type":"geo_point"}}}}

以下是人员更新的示例:

{"doc":{
  "full_name":"Oleta Yost",
  "pin":{"lat":47.123, "lon":-1.15}
}}

我的疑问:

{ "from":0,
  "size":24,
  "query":{
    "filtered":{
      "filter":{
        "and":[
          {"or":[
            {"term": /* some term filter */ },
            {"term": /* some term filter */ }
          ]},
          { "geo_shape":{
              "person.pin":{
                "shape":{
                  "type":"envelope",
                  "coordinates":[[46,47],[-10,10]]
                }
              }
            }
          }
        ]
      },
      "query":{
        "query_string":{
          "fields":["person.full_name^10"],
          "query":"full_name:\"Oleta Yost\""
        }
      }
    }
  }
}

此查询引发异常:

Field [person.pin] is not a geo_shape

我尝试了很多解决方案

我不知道我的问题在哪里......你能指出我吗?

1 个答案:

答案 0 :(得分:1)

以上查询使用的geoshape query仅适用于类型为geoshape的字段。 在上面的映射中,字段为geopoint

一种方法是将类型更改为地理位置:

"person": {
      "properties": {
         "pin": {
            "type": "geo_shape"
         }
      }
   }

引脚的json数据为:

pin : {
   "type" : "Point",
   "coordinates" : [ 46,47]
}