0

我正在尝试geo_point在 Heroku/Bonsai 上使用一个字段,但它就是不想工作。

它在本地工作,但每当我检查 Heroku/Bonsai 上索引的映射时,它都会说我的字段是一个字符串:"coordinates":{"type":"string"}

我的映射如下所示:

tire.mapping do
  ...
  indexes :coordinates, type: "geo_point", lat_lon: true
  ...
end

to_indexed_json喜欢这样:

def to_indexed_json
  {
    ...
    coordinates: map_marker.nil? ? nil : [map_marker.latitude, map_marker.longitude].join(','),
    ...
  }.to_json
end

在 Heroku 上的控制台中,我尝试过MyModel.mappingMyModel.index.mapping第一个正确的是:coordinates=>{:type=>"geo_point", :lat_lon=>true}.

4

1 回答 1

1

这是我如何让它工作的。索引名称“ myindex ”类型名称“ myindextype

在本地机器上

curl -XGET https://[LOCAL_ES_URL]/myindex/myindextype/_mapping

将输出保存到 .json 文件。示例:typedefinition.json(或手工构建)

{
  "myindextype":{
    "properties":{
      "dataone":{"type":"string"},
      "datatwo":{"type":"double"},
      "location":{"type":"geo_point"},
      "datathree":{"type":"long"},
      "datafour":{"type":"string"}
    }
  }
}

在heroku上输入命令

heroku config

并获取 BONSAI_URL。将它放在以下命令中,代替 [BONSAI_URL]。(https://asdfasdfdsf:asdfadf@asdfasdfasdf.us-east-1.bonsai.io/myindex

curl -XDELETE https://[BONSAI_URL]/myindex
curl -XPOST https://[BONSAI_URL]/myindex
curl -XPUT -d@typedefinition.json https://[BONSAI_URL]/myindex/myindextype/_mapping 
curl -XGET https://[BONSAI_URL]/myindex/myindextype/_mapping
  1. 如果存在则删除索引。
  2. 创建一个空索引。
  3. 使用 .json 文件作为映射的定义。
  4. 获取新映射以确保其正常工作。
于 2013-08-16T19:01:51.390 回答