如何为Searchkick配置多Elasticsearch服务器并按模型区分?
为Searchkick按模型配置不同的Elasticsearch服务器
要实现不同模型连接不同的Elasticsearch服务器,无需依赖全局的Searchkick.client设置,直接在每个模型的searchkick配置中指定专属客户端即可:
实现示例
方式一:单独定义客户端方法
# 连接第一个Elasticsearch服务器的模型 class ModelA < ApplicationRecord # 创建专属的Elasticsearch客户端实例 def self.searchkick_client Elasticsearch::Client.new(hosts: ["http://es-server-1:9200"]) end # 在searchkick配置中指定使用该客户端 searchkick client: searchkick_client end # 连接第二个Elasticsearch服务器的模型 class ModelB < ApplicationRecord def self.searchkick_client Elasticsearch::Client.new(hosts: ["http://es-server-2:9200"]) end searchkick client: searchkick_client end
方式二:直接在searchkick中定义客户端
如果逻辑简单,也可以直接把客户端实例写在searchkick参数里:
class ModelA < ApplicationRecord searchkick client: Elasticsearch::Client.new(hosts: ["http://es-server-1:9200"]) end class ModelB < ApplicationRecord searchkick client: Elasticsearch::Client.new(hosts: ["http://es-server-2:9200"]) end
完成配置后,每个模型会独立使用各自指定的Elasticsearch服务器进行索引和搜索操作,互不干扰。
内容的提问来源于stack exchange,提问作者WITO
相关产品推荐
相关产品推荐

