DBA Elasticsearch 交互工具
语法格式
Elasticsearch通过RESTful API和9200端口与其它语言驱动进行通信。
它的主要格式如下,这里主要针对curl交互方式,特别繁琐:
curl -X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' -d '<BODY>’
VERB:HTTP请求方式,如GET\POST\PUT\HEAD\DELETE等
PROTOCOL:http或者https
HOST:Elasticsearch中任意节点主机名,或者使用localhost代替本机节点
PORT:运行Elasticsearch HTTP服务的端口号,默认为9200
PATH:API终端路径,如_coun返回集群中的文档数量,它可能包含多个组件,例如_cluster/stats以及_nodes/stats/jvm
QUERY_STRING:任意可选的查询字符串参数,如?pretty将结果进行JSON格式化返回,使其更容易阅读
BODY:JSON格式请求体,用于POST/PUT/DELETE数据等
交互方式
常用的交互方式有以下三种:
- curl命令:
- 较为繁琐
- 较为复杂
- 容易出错
- 不用安装额外软件
- es-head工具:
- 查看数据方便
- 操作相对容易
- 需要node环境
- kibana工具:
- 查看数据及报表的格式丰富
- 操作简单
- 需要安装java环境和配置kibana
此外,由于Elasticsearch是RESTful API的交互方式,也可使用postman工具与其进行交互。
重要的一点是必须修改Elasticsearch配置文件,让其能够支持CORS跨域请求:
vim /etc/elasticsearch/elasticsearch.yml
# 添加:
http.cors.enabled: true
http.cors.allow-origin: "*"
最后别忘了重启Elasticsearch服务。
Es-Head
下载安装
很久之前该工具是Elasticsearch内置的,但是在5.0后被移除,用于可视化Elasticsearch,通过它能够更加直观的查看数据信息、监控集群状态等。
需要node.js环境支持,或者你也可以直接使用别人封装好的docker镜像。
我这里演示在MAC本机上操作局域网内Elasticsearch服务器。
该插件官方地址如下:
https://github.com/mobz/elasticsearch-head
使用docker部署Elasticsearch-head:
$ docker pull alivv/elasticsearch-head
$ docker container run -d -p 9100:9100 --name="es-head" --restart=always alivv/elasticsearch-head:latest
或者使用node.js编译安装Elasticsearch-head:
$ yum install nodejs npm openssl screen -y
$ node -v
$ npm -v
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
$ cd /opt/
$ git clone git://github.com/mobz/elasticsearch-head.git
$ cd elasticsearch-head/
$ cnpm install
$ cnpm run start
$ Ctrl+A+D
基本使用
由于网速原因,我这里使用docker进行的部署,现在可以打开浏览器访问MAC本地地址,端口号是9100(head),即为head工具的端口号。
一般来说,该工具我们只会用它3个地方,分别是概览,索引,数据浏览。
并不推荐在该工具中对Elasticsearch进行数据增删改,仅提供浏览功能即可。
现在,让我创建一个index,查看Elasticsearch-head中的变化:
变化如下:
概念铺垫
每一个index创建后,默认都会有5个分片,被称之为主分片。
除此之外,默认还会有1个副本,副本也是5个分片,被称之为副本分片。
在上面的示例中由于是单节点的Elasticsearch故副本无效,所以右侧集群健康值变黄。
Elasticsearch天生为集群而生,一个Elasticsearch服务就会被认为是一个集群
一个分片,底层就是一个Lucene的索引,包含了倒排索引文件的目录,这样的结构使得Elasticsearch可以在不扫描全部文档的情况下快速的拿出想要的数据。
集群状态颜色有以下几种变化:
- 绿色:所有条件符合,数据完整,副本满足
- 黄色:数据完整,但副本不满足
- 红色:索引数据不完整
- 紫色:有分片正在同步中(多节点)
Kibana
功能概述
kibana是针对Elasticsearch的开源分析以及可视化平台,能够提供各种图表等高级数据的分析展示功能。
同时,操作也非常简单,相较于crul命令能有效提高工作效率,是Elasticsearch数据分析的必备软件。
注意!kibana必须与Elasticsearch安装版本一致
下载安装
由于我们的Elasticsearch是7.6.1版本,故kibana也要7.6.1版本:
由于该工具依然要求npm环境等,所以这里采用docker进行安装部署。
我这里演示在MAC本机上操作局域网内Elasticsearch服务器。
查看所有kibana版本:点我跳转
1)拉取镜像:
$ docker pull docker.elastic.co/kibana/kibana:7.6.1
2)创建容器挂载目录:
$ mkdir -p /opt/docker/kibana/config
3)配置kibana文件:
$ vim /opt/docker/kibana/config/kibana.yml
#
# ** THIS IS AN AUTO-GENERATED FILE **
#
# Default Kibana configuration for docker target
server.name: kibana
server.host: "0"
# elasticsearch服务器的地址:
elasticsearch.hosts: [ "http://192.168.0.110:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
4)运行镜像,获得容器,需要等很久:
$ docker run -d --name="kibana" --restart=always -p 5601:5601 -v /opt/docker/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml docker.elastic.co/kibana/kibana:7.6.1
5)查看容器日志,当有内容变化时代表启动成功了,这个过程可能要持续半分钟:
$ docker logs -ft kibana
汉化设置
浏览器输入127.0.0.1:5601,连接至局域网内的Elasticsearch服务器:
可以看见默认是英文,在这里为其进行汉化设置。
我们只需要加上一行配置:
$ vim /opt/docker/kibana/config/kibana.yml
# 添加到底部
i18n.locale: zh-CN
接下来重启容器即可:
$ docker container rm -f kibana
$ docker container ls -a
$ docker container rm -f 容器id
$ docker run -d --name="kibana" --restart=always -p 5601:5601 -v /opt/docker/kibana/config/kibana.yml:/usr/share/kibana/config/kibana.yml docker.elastic.co/kibana/kibana:7.6.1
查看容器日志,当有内容变化时代表启动成功了,这个过程可能要持续半分钟:
$ docker logs -ft kibana
基本使用
现在我们可以点击左侧扳手进行命令输入了,如增加一个库: