在 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 安装或更新所需的包,就像 rubygems 的 bundler
Ruby on Rails - 迭代 Twitter Gem 搜索结果的问题