如何使 ElasticSearch 客户端在应用程序范围内可用?

Posted

技术标签:

【中文标题】如何使 ElasticSearch 客户端在应用程序范围内可用?【英文标题】:How do I make ElasticSearch Client available application wide? 【发布时间】:2016-06-12 13:22:54 【问题描述】:

我在 Rails 应用程序中使用elasticsearch_ruby。我选择不使用elasticsearch_rails,因为我不想与我的 ActiveRecord 对象进行如此紧密的集成。

使用elasticsearch_rubyelasticsearch_transport,创建一个新客户端,如下所示:

client = ElasticSearch::Client.new(log:true)

如何让这个客户端在应用程序范围内可访问。 我只想创建一次实例,然后在应用程序范围内使用它。

这样做的最佳做法是什么?

我似乎遗漏了一些明显的东西。

【问题讨论】:

【参考方案1】:

使用初始化器 1.在configuration/initializer/elasticsearch.rb下创建一个文件 2. 像$elasticsearch_client=ElasticSearch::Client.new(log:true)一样初始化你的客户端 3. 在您的 Rails 应用程序中的任何位置使用此 $elasticsearch_client

【讨论】:

这就是elasticsearch_ruby用户最接受的方式吗? 我不知道elasticsearch_ruby的用户。但这是 Redis 用于整个应用程序的方式。 @JohnLinux 随时分享建议解决方案的结果

以上是关于如何使 ElasticSearch 客户端在应用程序范围内可用?的主要内容,如果未能解决你的问题,请参考以下文章

跨进程加载的 DLL - 如何使某些操作“类似于单例”

(57)ElasticSearch重建索引且保证应用程序不用重启

Elasticsearch:在 Java 客户端应用中管理索引 - Elastic Stack 8.x

Elasticsearch:在 Java 客户端应用中管理索引 - Elastic Stack 8.x

如何在elasticsearch中使多个字段可搜索[关闭]

Elasticsearch,如何使 NEST 地图响应类