Не могу заставить geo_point работать с Бонсай на Heroku

Я пытаюсь использовать 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.mapping а также MyModel.index.mapping и первый правильно имеет :coordinates=>{:type=>"geo_point", :lat_lon=>true},

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 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. Получите новое отображение, чтобы убедиться, что оно работает.
Другие вопросы по тегам