Elasticsearch 配置使用
Elasticsearch 简介
Elasticsearch 是一个基于 Apache Lucene(TM) 的开源搜索引擎。 无论在开源还是专有领域,Lucene 可以被认为是迄今为止最先进、性能最好的、功能最全的搜索引擎库。 Elasticsearch 也使用 Java 开发并使用 Lucene 作为其核心来实现所有索引和搜索的功能, 但是它的目的是通过简单的 RESTful API 来隐藏 Lucene 的复杂性,从而让全文搜索变得简单。 不过,Elasticsearch 不仅仅是 Lucene 和全文搜索,我们还能这样去描述它: * 分布式的实时文件存储,每个字段都被索引并可被搜索 * 分布式的实时分析搜索引擎 * 可以扩展到上百台服务器,处理 PB 级结构化或非结构化数据
Elasticsearch 配置
ES 在之前的 ELK 快速安装中已经安装好了。
下面我们来进行配置。
ES 配置文件 /etc/elasticsearch/elasticsearch.yml
,如下配置
grep "^[a-Z]" /etc/elasticsearch/elasticsearch.yml
cluster.name: myes # 集群名称,名称相同即属于同一个集群
node.name: linux-node1 # 本机在集群的内的名称
path.data: /data/es-data # 保存数据的目录,此目录空间要大,IO 要高,
path.logs: /var/log/elasticsearch # 保存日志的目录
bootstrap.mlockall: true # 服务启动的时候锁定内存,防止写入 swap
network.host: 192.168.56.11 # 监听地址
http.port: 9200 # 监听端口
#discovery.zen.ping.unicast.hosts: ["192.168.56.11", "192.168.56.12"]
# 创建集群的时候组播地址,用于广播无效的情况下,可以只用在一台 ES 上配置所有 ES 节点
path.data: /data/es-data
此目录先要创建好,并设置好属主
mkdir -p /data/es-data
chown -R elasticsearch.elasticsearch /data/es-data
# 启动 ES
systemctl start elasticsearch
# 测试
[root@linux-node1 ~]# curl -i -XGET 'http://192.168.56.11:9200/'
HTTP/1.1 200 OK
Content-Type: application/json; charset=UTF-8
Content-Length: 311
{
"name" : "linux-node1",
"cluster_name" : "myes",
"version" : {
"number" : "2.3.5",
"build_hash" : "90f439ff60a3c0f497f91663701e64ccd01edbb4",
"build_timestamp" : "2016-07-27T10:36:52Z",
"build_snapshot" : false,
"lucene_version" : "5.5.0"
},
"tagline" : "You Know, for Search"
}
ES 集群
按照上面步骤完成 linux-node2 上的 ES 安装并启动。
Elasticsearch 为分布式而生,而且它的设计隐藏了分布式本身的复杂性。
当完成 linux-node2 的配置,它就自动加入了 myes 集群。
默认情况下 ES 是使用组包的方式通信的,也就是看其他节点是不是同一个在 cluster name 下,并选举一个主节点。
集群健康
使用如下 API 访问:
curl -XGET ‘http://192.168.56.11:9200/_cluster/health?pretty=true’
其他监控系统可以通过此 API 来监控 ES 集群健康状态。
ES 安装插件
插件是为了完成不同的功能,官方提供了一些插件但是是收费的,
另外也有一些开发爱好者提供的插件,可以实现对 ES 集群的状态监控与管理配置等功能。
安装 head 插件
elasticsearch-head A web front end for an elastic search cluster
/usr/share/elasticsearch/bin/plugin install mobz/elasticsearch-head
安装完成后通过浏览器访问 http://192.168.56.11:9200/_plugin/head/
下面我们创建 index 数据,如下图示:
以下图示 head 插件的使用:
颜色 | 意义 |
---|---|
green | 所有主要分片和复制分片都可用 |
yellow | 所有主要分片可用,但不是所有复制分片都可用 |
red | 不是所有的主要分片都可用 |
安装 kopf 插件
kopf is a simple web administration tool for elasticsearch written in JavaScript + AngularJS + jQuery + Twitter bootstrap. It offers an easy way of performing common tasks on an elasticsearch cluster. Not every single API is covered by this plugin, but it does offer a REST client which allows you to explore the full potential of the ElasticSearch API.
/usr/share/elasticsearch/bin/plugin install lmenezes/elasticsearch-kopf
安装完成后通过浏览器访问 http://192.168.56.11:9200/_plugin/kopf/
其他插件
- Marvel 插件
Marvel 是 Elasticsearch 的管理和监控工具,在开发环境下免费使用。 它包含了一个叫做 Sense 的交互式控制台,使用户方便的通过浏览器直接与 Elasticsearch 进行交互。 Elasticsearch 线上文档中的很多示例代码都附带一个 View in Sense 的链接。点击进去,就会在 Sense 控制台打开相应的实例。
- bigdesk 插件 (elasticsearch-2.3.5-1 上不能安装)
Ref
Elasticsearch 权威指南(中文版)
elasticsearch-head
elasticsearch-kopf