在 Ruby 中使用弹性搜索 gem 时在哪里指定集群详细信息

Posted

技术标签:

【中文标题】在 Ruby 中使用弹性搜索 gem 时在哪里指定集群详细信息【英文标题】:where to specify cluster details when using elastic search gem in Ruby 【发布时间】:2017-01-21 05:52:27 【问题描述】:

我想从我的rails 应用程序访问Elastic Search Cluster 中的数据。假设服务器在http://localhost:9200 运行,我想访问端点http://localhost:9200/location/type

下面这个documentation 遇到了这个例子:

require 'elasticsearch'

client = Elasticsearch::Client.new log: true

client.cluster.health

client.index index: 'my-index', type: 'my-document', id: 1, body:  title: 'Test' 

client.indices.refresh index: 'my-index'

client.search index: 'my-index', body:  query:  match:  title: 'test'   

问题:

我将在代码中哪里定义我的elasticsearch cluster 的详细信息?集群运行在http://localhost:9200/

【问题讨论】:

【参考方案1】:

作为文档细节,elasticsearch gem 包装了elasticsearch-transport 用于连接到集群,elasticsearch-api 用于访问elasticsearch API。来自 elasticsearch-transport 的文档,

以最简单的形式,连接到在http://localhost:9200 上运行的 Elasticsearch,无需任何配置:

所以基本上,client = Elasticsearch::Client.new log: true 将默认连接到运行在 localhost:9200 的集群(与您的 Rails 应用程序相同的机器)。

在建立连接后尝试执行client.cluster.health,你会知道它是否成功。

此外,如果您的集群运行在不同的服务器上,您可以使用以下方式连接到它:

es = Elasticsearch::Client.new host: http(s)://<path-to-cluster-server>

【讨论】:

以上是关于在 Ruby 中使用弹性搜索 gem 时在哪里指定集群详细信息的主要内容,如果未能解决你的问题,请参考以下文章

使用 npm 安装或更新所需的包,就像 ruby​​gems 的 bundler

Ruby on Rails - 迭代 Twitter Gem 搜索结果的问题

使用Ruby Gem for Twitter获取Hashtag的搜索结果

Gemfile 中的 Ruby Bundler 多个源

Ruby 中的“Gemfile”在哪里?

Ruby-Audio - “找不到指定的模块......”