无法让geo_point与Heroku上的Bonsai合作

时间:2013-07-04 18:09:08

标签: heroku elasticsearch tire geo bonsai-elasticsearch

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

它在本地工作,但每当我在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}

1 个答案:

答案 0 :(得分: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. 删除indes(如果存在)。
  2. 创建一个空索引。
  3. 使用.json文件作为映射定义。
  4. 获取新映射以确保其有效。