現在、私の Rails アプリケーションは、統合のために Elasticsearch-model および elasticsearch-rails gems を使用して Elasticsearch を利用しています。
require 'elasticsearch/model'
class Article < ActiveRecord::Base
include Elasticsearch::Model
include Elasticsearch::Model::Callbacks
settings :index => {
:number_of_shards => 1,
:max_result_window => MAX_RESULT_WINDOW
},
:analysis => {
:filter => {
:email => {
:type => 'pattern_capture',
:preserve_original => 1,
:patterns => [
'([^@]+)',
'(\\p{L}+)',
'(\\d+)',
'@(.+)',
'([^-@]+)'
]
}
},
:analyzer => {
:email => {
:tokenizer => 'uax_url_email',
:filter => [
'email',
'lowercase',
'unique'
]
}
}
} do
mappings do
indexes :sent_at, type: 'date', fields: { raw: { type: 'date', index: 'not_analyzed' } }
end
end
def as_indexed_json(options={})
self.as_json(
only: [:id, :send_at, :sent_at, :category, :student_id, :delivered_email, :deleted_at],
methods: [:student_email, :subject, :from, :sent_at_utc,
:groups_name_with_format, :full_name, :deleted_at, :level, :att_name, :has_credential_capture]
)
end
end
Article.__elasticsearch__.create_index!
Article.import
現在、OpenSearch に移行するつもりですが、次のような同様の機能を提供する gem が見つかりません。
Opensearch.client.import
この移行を実現する方法について提案がある人はいますか?ご協力をいただければ幸いです。
Searchkick は Elasticsearch と Opensearch の両方をサポートしています。 https://translate.google.com/translate?hl=ja&sl=en&tl=ja&u=https://github.com/ankane/searchkick