2.2 head:Elasticsearch的数据管理工具
Elasticsearch-head是一种与Elasticsearch集群交互的Web前端工具。利用它,能够便捷地浏览和操作集群中的数据,为开发人员和用户提供直观的可视化界面。在Elasticsearch早期的版本中,head以插件的形式整合到其{es_home}/plugins目录中;而在Elasticsearch5.0及之后的版本中,head变为独立运行的本地或server程序,用户可以在其GitHub网站中下载源程序代码,本地运行或搭建服务器启动head。
Tips:访问网站https://github.com/mobz/elasticsearch-head,在文件列表的左上方选择master,将程序源代码ZIP压缩包保存到本地并解压。
如果让head作为server程序部署和运行,则需要借助npm和grunt组件完成。npm是随同node.js一起安装的包管理工具,能解决node.js代码部署上的很多问题。grunt是一个基于任务的Javascript命令行构建工具,grunt及其插件是通过npm安装并管理的。
从互联网下载并安装node.js(注:可使用查看软件版本的终端命令node-v和npm-v来测试其能否成功运行)。在确认npm工作正常之后,进入解压好的elasticsearch-head-master目录,使用终端命令sudo npm install来安装该目录中的一些组件(包括grunt的一部分必要组件),部分安装过程如图2.2所示。
图2.2 使用npm安装server程序的组件
使用终端命令sudo npm install-g grunt-cli安装grunt组件,命令执行结束后,终端将会显示出grunt组件的存储位置,如图2.3所示。
图2.3 安装grunt组件
在图中第3行文字中,箭头“→”右侧指明了grunt组件的路径。沿这一路径找到grunt-cli文件夹,使用终端命令sudo cp-r./grunt-cli/{中间路径}/elasticsearch-head-master/node_modules将其复制到head源程序主目录的node_modules/目录中。最后,进入grunt-cli/bin目录,使用终端命令./grunt server启动服务器,如图2.4所示。
图2.4 启动head服务器
Tips:这里对head和grunt的安装需要提升权限执行,Linux用户需要在命令前加sudo,并输入当前用户的密码;Windows用户不必加sudo,但需要以管理员身份运行控制台。
从grunt程序的输出信息中不难看出,该服务器占用9100端口,因此可在浏览器中输入http://localhost:9100来访问head。在Elasticsearch启动时,head将自动检测其来自9200端口的信息并自动完成连接Elasticsearch的工作。需要说明的是,为防范跨域脚本攻击,在尚未为Elasticsearch配置cors之前,head不会与Elasticsearch连接。此时应在{es_home}/config/elasticsearch.yml配置文件末尾添加如下两行配置信息并重启Elasticsearch。
http.cors.enabled: true http.cors.allow-origin: "*"
Tips:上述配置中,第二行配置信息中的*号表示“允许从任何来源跨域访问”,这样的配置存在一定风险。如需要进行更安全的配置,可将*号改为远程主机地址的正则表达式,以过滤不安全的访问来源。
如果让head在本地运行,直接在浏览器打开head源程序目录中的index.html文件即可,但要注意做好上文提到的两行关于cors的配置。
完成上述过程之后,启动Elasticsearch并在head中检查连接是否正常。如一切正常,那么head会显示和早期版本类似的界面,如图2.5所示,其中每一绿色小方格均代表一个数据分片(shard),横向每一行均代表一个节点(node),纵向每一列均代表一个索引(index)。
图2.5 成功运行的head
图2.5中开启了两个节点,包括一个主节点和一个从节点。在初次安装Elasticsearch之后,若要开启两个或多个节点,应该预先在elasticsearch.yml配置文件末尾加入如下配置(表示允许最多开启5个节点)并重新开启各节点。
node.max_local_storage_nodes:5
Tips:Elasticsearch-head不是Elastic官方提供的可视化工具,为使Elasticsearch索引中的数据更加直观,查询更加简便,本书接下来的几章将继续使用head进行有关查询命令的介绍。Elastic官方推出的Kibana及其X-Pack插件是与Elasticsearch配套的可视化管理方案,推荐读者在项目实战中使用带有X-Pack插件的Kibana。