Я пытаюсь интегрировать Elasticsearch в мое приложение rails. Проблема возникает, когда я пытаюсь выполнить импорт моей модели. Видео .__ elasticsearch __. Импорт.
Итак, в консоли rails я запустил Video .__asticsearch __. Import . Я получаю эту ошибку:
myflix_development не существует для импорта. Используйте create_index! или параметр: force для его создания.
Затем я запустил Видео .__ эластичный поиск __. Create_index! и Видео .__ эластичный поиск __. Create_index! (Force: true) , и они оба вернули ту же ошибку исключения из недопустимого аргумента:
PUT http://localhost:9200/myflix_development [status:400, request:0.027s, query:N/A]
2019-06-08 11:18:29 +0800: > {"settings":{},"mappings":{"_doc":{"properties":{}}}}
2019-06-08 11:18:29 +0800: < {"error":{"root_cause":[{"type":"illegal_argument_exception","reason":"The mapping definition cannot be nested under a type [_doc] unless include_type_name is set to true."}],"type":"illegal_argument_exception","reason":"The mapping definition cannot be nested under a type [_doc] unless include_type_name is set to true."},"status":400}
Я понимаю, что я должен создать индекс эластичного поиска, когда я пытаюсь выполнить импорт, но я получаю это недопустимое исключение аргумента, о котором я озадачен
Вот что я сделал для настройки:
1) Включены драгоценные камни в мой gemfile:
gem 'elasticsearch-model'
gem 'elasticsearch-rails'
2) Включен инициализатор: app / config / initializers /asticsearch.rb
Elasticsearch::Model.client =
if Rails.env.staging? || Rails.env.production?
Elasticsearch::Client.new url: ENV['SEARCHBOX_URL']
elsif Rails.env.development?
Elasticsearch::Client.new log: true
else
Elasticsearch::Client.new
end
3) Включен эластичный поиск в моей модели видео
class Video < ActiveRecord::Base
include Elasticsearch::Model
index_name ["myflix", Rails.env].join("_")
...
end
4) Gemfile.lock
elasticsearch (7.1.0)
elasticsearch-api (= 7.1.0)
elasticsearch-transport (= 7.1.0)
elasticsearch-api (7.1.0)
multi_json
elasticsearch-model (6.0.0)
activesupport (> 3)
elasticsearch (> 1)
hashie
elasticsearch-rails (6.0.0)
elasticsearch-transport (7.1.0)
faraday
multi_json
Любая помощь будет оценена!
Редактировать
1) Попытка сделать ручное отображение в моей модели
class Video < ActiveRecord::Base
include Elasticsearch::Model
settings index: { number_of_shards: 1 } do
mappings dynamic: 'false' do
indexes :title, type: 'text'
indexes :description, type: 'text'
end
end
...
end