简介

elasticsearch-head是一个界面化的集群操作和管理工具,可以对集群进行傻瓜式操作。你可以通过插件把它集成到es(首选方式),也可以安装成一个独立webapp。

es-head主要有三个方面的操作:

  1. 显示集群的拓扑,并且能够执行索引和节点级别操作
  2. 搜索接口能够查询集群中原始json或表格格式的检索数据
  3. 能够快速访问并显示集群的状态
  4. 有一个输入窗口,允许任意调用RESTful API。这个接口包含几个选项,可以组合在一起以产生有趣的结果:
  1. 请求方法(get、put、post、delete),查询json数据,节点和路径
  2. 支持JSON验证器
  3. 支持重复请求计时器
  4. 支持使用javascript表达式变换结果
  5. 收集结果的能力随着时间的推移(使用定时器),或比较的结果
  6. 能力图表转换后的结果在一个简单的条形图(包括时间序列)

官方的文档

https://github.com/mobz/elasticsearch-head

windows安装

elasticsearch 5.6.3以上版本安装ES-head插件和ES-5.0之前的版本安装步骤是不一样的,网上的大部分都停留在5.0之前的版本,都是不可用的; 下面使用最新的安装方法:


1,安装nodejs

下载node.js,地址:https://nodejs.org/en/。 由于head插件本质上还是一个nodejs的工程,因此需要安装node,使用npm来安装依赖的包。(npm可以理解为maven)

nodejs下载地址: https://nodejs.org/en/download/

版本选择下载目录:https://nodejs.org/en/download/releases/

elasticsearch 5.6.3+和6安装ES-head插件_ES-head插件

这里我们使用windows,下载windows版本即可;下载完成,默认安装!

打开DOS窗口:

node -v
npm -v

elasticsearch 5.6.3+和6安装ES-head插件_elasticsearch-head_02

如图显示版本,说明安装成功!

2,安装grunt

grunt是一个很方便的构建工具,可以进行打包压缩、测试、执行等等的工作,ES 5.0之后的版本的head插件就是通过grunt启动的。

使用npm安装grunt:

linux:npm install grunt-cli

windows:npm install grunt-cli -g

安装完成后,检查是否安装成功:

grunt -version

elasticsearch 5.6.3+和6安装ES-head插件_安装ES-head插件_03

3, 安装ES-head

  • 下载ES-head源码,地址:https://github.com/mobz/elasticsearch-head, 名称:elasticsearch-head-master.zip,解压:
  • 在elasticsearch 5.6.3/plugins/ 目录下新建head/目录,将解压的文件copy到head/目录下; 

elasticsearch 5.6.3+和6安装ES-head插件_elasticsearch_04

4,修改配置

修改elasticsearch配置

修改ES使用的参数。编辑/elasticsearch-5.6.3/config/elasticsearch.yml文件:

#增加新的参数,这样head插件可以访问ES

http.cors.enabled: true
http.cors.allow-origin: "*"

注意,设置参数的时候 “: ”(冒号)后面要有空格!

修改ES-head配置

由于head的代码还是2.6版本的,直接执行有很多限制,比如无法跨机器访问。因此需要用户修改配置:

找到文件/elasticsearch-5.6.3/head/Gruntfile.js,修改其中的connect配置,增加hostname属性,设置为 *

connect: {
server: {
options: {
port: 9100,
hostname: '*',
base: '.',
keepalive: true
}
}
}

5,启动head

  • 点击:D:\es\elasticsearch-5.6.3\bin\elasticsearch.bat
  • 启动nodejs

在/head/目录下 下载依赖的包。打开命令提示符,运行:

npm install

注意:第一次启动下载,可能会报警告或错误,可再次执行npm install命令执行下载(由于网速原因,前后执行了三次npm install才下载成功)。

head/目录下启动nodejs:

grunt server

elasticsearch 5.6.3+和6安装ES-head插件_ES-head插件_05

  • 访问:target:9100

elasticsearch 5.6.3+和6安装ES-head插件_ES-head插件_06

由于还没有对ES做集群,所以看不到内容。

linux安装es-head插件

资源

elasticsearch-head资源: https://github.com/mobz/elasticsearch-head

elasticsearch-head下载地址:https://github.com/mobz/elasticsearch-head/archive/master.zip

下载安装

安装elasticsearch-head

//进入 /usr/local目录下
cd /usr/local

//下载 es-head
wget https://github.com/mobz/elasticsearch-head/archive/master.zip
...

//解压
unzip master.zip
...

//授权给 elastic用户
chown -R elastic:elastic elasticsearch-head-master

安装nodejs

nodejs版本选择下载目录:https://nodejs.org/en/download/releases/

  • 安装nodejs-v8.16版本

nodejs-v8.16内置npm-6.4.1版本

wget https://nodejs.org/download/release/v8.16.0/node-v8.16.0-linux-x64.tar.gz
//解压
tar -zxvf node-v8.16.0-linux-x64.tar.gz
//改目录名
mv node-v8.16.0-linux-x64 node-v8.16.0
  • 配置node环境
[root@localhost local]# vi /etc/profile
//添加下面两行
#SET PATH FOR NODEJS
#export NODEJS_HOME=【这里是解压后的目录的绝对路径】
#export PATH=$NODEJS_HOME/bin:$PATH

export NODEJS_HOME=/usr/local/node-v8.16.0
export PATH=$PATH:$NODEJS_HOME/bin

配置生效:

[root@localhost local]# source /etc/profile
[root@localhost local]# node -v
v8.16.0

安装grunt

可以在es-head目录下,安装grunt

[root@localhost elasticsearch-head-master]# npm install -g grunt-cli 
...
[root@localhost elasticsearch-head-master]# grunt -version
grunt-cli v1.3.2

配置并启动es-head

修改es-head配置

  • 更改Gruntfile.js文件
cd /usr/local/es/elasticsearch-head/
vim ./Gruntfile.js

修改其中的connect配置,增加hostname属性,设置为 * :

90                 connect: {
91 server: {
92 options: {
93 hostname: '*',//添加hostname
94 port: 9100,
95 base: '.',
96 keepalive: true
97 }
98 }
99 }
  • 更改_site/app.js文件 修改elasticsearch-head默认连接地址
cd /usr/local/elasticsearch-head/_site/
vim app.js

打开文件 在命令行模式输入 “/this.base_uri” 进行搜索: 修改为

this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://you ip address:9200";

elasticsearch 5.6.3+和6安装ES-head插件_elasticsearch-head_07

注意:如果未更改app.js,外网IP访问的时候:es-head链接访问的地址是:http://localhost:9200/,会导致灰色状态:未连接。

  • 错误示例:

elasticsearch 5.6.3+和6安装ES-head插件_安装elasticsearch-head_08

更改es配置

修改elasticsearch服务配置文件允许跨域(es和es-head是两个独立的服务,存在跨域问题

http.cors.enabled: true
http.cors.allow-origin: "*"

注意冒号后面跟一个空格“ ”

启动es-head

cd /usr/local/elasticsearch-head-master
//安装es-head下载安装需要的包,可能会失败,多试几次安装
npm -install
...

//启动es-head
npm run start

//grunt server

es-head端口是9100。

将9100端口放开防火墙!!!

访问:http://192.168.10.30:9100/

elasticsearch 5.6.3+和6安装ES-head插件_ES-head插件_09

es未启动,所以显示:未连接

es启动之后,访问成功

后台启动es和es-head

窗口启动,不能进行其他操作。所以,可以设置后台启动。

  • 后台启动es:
./bin/elasticsearch -d
  • 后台启动es-head
nohup /usr/local/es/elasticsearch-head/node_modules/grunt/bin/grunt server & exit

&和nohup

参考:linux-->命令-->linux命令之&和nohup.文档

访问:http://192.168.10.30:9100/

elasticsearch 5.6.3+和6安装ES-head插件_ES-head插件_10

elasticsearch-head链接状态

  • 集群健康值:green(0 of 0) 【绿色】

运行很好:所有主要分片和复制分片都可用;这种情况Elasticsearch集群所有的主分片和副本分片都已分配, Elasticsearch集群是 100% 可用的。

  • 集群健康值:yellow(15 of 30) 【黄色】

运行一般:所有主要分片可用,但不是所有复制分片都可用; 这种情况Elasticsearch集群所有的主分片已经分片了,但至少还有一个副本是缺失的。不会有数据丢失,所以搜索结果依然是完整的。不过,你的高可用性在某种程度上被弱化。如果 更多的 分片消失,你就会丢数据了。把 yellow 想象成一个需要及时调查的警告。

  • 集群健康值:red( of ) 【红色】

运行有问题:不是所有的主要分片都可用;表明分片有一部分损坏。此时执行查询部分数据仍然可以查到,遇到这种情况,还是赶快解决比较好; 这种情况Elasticsearch集群至少一个主分片(以及它的全部副本)都在缺失中。这意味着你在缺少数据:搜索只能返回部分数据,而分配到这个分片上的写入请求会返回一个异常。