使用Ruby on Rails连接到Open Distro for Elasticsearch
关于这篇文章
下面将详细介绍如何将Ruby on Rails连接到Docker上的Open Distro for Elasticsearch。
「Open Distro for Elasticsearch」是什么意思?
开放分布式搜索(Open Distro for Elasticsearch)是Elasticsearch的一个发行版,它被用于Amazon Elasticsearch Service服务。
Docker – 裝箱
参考公式文档,使用docker-compose启动Open Distro for Elasticsearch。本次是在单节点上进行启动。
version: "3"
services:
elasticsearch_open_distro:
image: amazon/opendistro-for-elasticsearch:1.9.0
environment:
- discovery.type=single-node
- cluster.name=elasticsearch
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
ulimits:
memlock:
soft: -1
hard: -1
ports:
- 9200:9200
使用Ruby on Rails进行连接
我将使用elasticsearch-rails和elasticsearch-model。
gem 'elasticsearch-model'
gem 'elasticsearch-rails'
与通常的Elasticsearch不同,Open Distro for Elasticsearch在localhost上也需要使用https进行连接。因此,初始化器的编写如下所示。对于localhost,我们使用transport_options设置ssl的verify为false。ELASTICSEARCH_USER和ELASTICSEARCH_PASSWORD默认情况下都是admin,可以用于连接。
Elasticsearch::Model.client = Elasticsearch::Client.new(
host: 'localhost',
port: 9200,
user: ENV['ELASTICSEARCH_USER'],
password: ENV['ELASTICSEARCH_PASSWORD'],
scheme: 'https',
transport_options: {
ssl: {
verify: false,
},
},
)
你可以在elasticsearch-rails的使用说明中找到步骤来确认连接。