将 Opensearch 与 Ruby on Rails 集成

问题描述 投票:0回答:1

目前,我的 Rails 应用程序利用 Elasticsearch 与 elasticsearch-model 和 elasticsearch-rails gems 进行集成:

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

有人对如何实现此迁移有建议吗?任何帮助将不胜感激。

ruby-on-rails ruby elasticsearch opensearch amazon-opensearch
1个回答
0
投票

Searchkick 支持 Elasticsearch 和 Opensearch: https://github.com/ankane/searchkick

© www.soinside.com 2019 - 2024. All rights reserved.