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数据等

交互方式

​ 常用的交互方式有以下三种:

  1. curl命令:
    • 较为繁琐
    • 较为复杂
    • 容易出错
    • 不用安装额外软件
  2. es-head工具:
    • 查看数据方便
    • 操作相对容易
    • 需要node环境
  3. 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工具的端口号。

Elasticsearch 常用工具

​ 一般来说,该工具我们只会用它3个地方,分别是概览,索引,数据浏览。

​ 并不推荐在该工具中对Elasticsearch进行数据增删改,仅提供浏览功能即可。

​ 现在,让我创建一个index,查看Elasticsearch-head中的变化:

Elasticsearch 常用工具

​ 变化如下:

Elasticsearch 常用工具

概念铺垫

​ 每一个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服务器:

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

基本使用

​ 现在我们可以点击左侧扳手进行命令输入了,如增加一个库:

Elasticsearch 常用工具

上一篇:在filebeat中配置kibana报错解决


下一篇:CVE 2020 1938