Opensearch と Ruby on Rails の統合

概要

現在、私の 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