Elasticsearch-head插件使用小结
1、ElasticSearch-head是什么?
ElasticSearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。 -----百度百科
而ElasticSearch-head就是一款能连接ElasticSearch搜索引擎,并提供可视化的操作页面对ElasticSearch搜索引擎进行各种设置和数据检索功能的管理插件,如在head插件页面编写RESTful接口风格的请求,就可以对ElasticSearch中的数据进行增删改查、创建或者删除索引等操作。类似于使用navicat工具连接MySQL这种关系型数据库,对数据库做操作。
对于如何安装ElasticSearch和ElasticSearch-head下面不做说明,百度下,网上有很多资料~
2、ElasticSearch-head页面介绍
2.1 head插件登陆和连接ElasticSearch
在登陆和访问head插件地址和ElasticSearch前需要事先在服务器上安装和配置好ElasticSearch以及head插件。安装完后,默认head插件的web端口为9100,ElasticSearch服务的端口为9200,使用浏览器访问head地址,如http://IP地址:9100/,推荐使用Chrome浏览器,head插件对Chrome浏览器兼容更佳。进入head页面后将ElasticSearch连接输入框中填写正确的ElasticSearch服务地址,如http://IP地址:9200/。访问后效果如下图:
2.2 head插件页面
概览页面:
上图为概览页面效果,简单说明下以上5个画了红框的地方
1:集群健康值。Elasticsearch 中其实有专门的衡量索引健康状况的标志,分为三个等级:
- green,绿色。这代表所有的主分片和副本分片都已分配。你的集群是 100% 可用的。
- yellow,黄色。所有的主分片已经分片了,但至少还有一个副本是缺失的。不会有数据丢失,所以搜索结果依然是完整的。不过,你的高可用性在某种程度上被弱化。如果更多的分片消失,你就会丢数据了。所以可把 yellow 想象成一个需要及时调查的警告。
- red,红色。至少一个主分片以及它的全部副本都在缺失中。这意味着你在缺少数据:搜索只能返回部分数据,而分配到这个分片上的写入请求会返回一个异常。
如果只有一台主机的话,其实索引的健康状况也是 yellow,所有上图显示为yellow。因为一台主机,集群没有其他的主机可以防止副本,所以说,这就是一个不健康的状态,因此集群也是十分有必要的。
2:表示在Elasticsearch已经创建的索引(index)。包含了索引的名称、索引的大小(size)、索引的数据量(docs),并且通过【信息】和【动作】可以查看索引信息或者给索引建别名。
3:表示Elasticsearch节点。上图中的带有感叹号的Unassigned表示未分配的节点,带有星号的表示是主节点,其节点名称叫:Hu9Suoy,并能查看节点信息。
4:表示索引分片,Elasticsearch数据就存储在这些分片中。
5:查看Elasticsearch相关的信息和刷新head插件。如查看Elasticsearch版本信息,如下图:
索引页面:
索引页面能看到当前Elasticsearch中已经创建的索引,这里的索引类似于传统关系型数据库中的一张张表,并且可以在该页面上新建索引。
数据浏览页面:
数据浏览页面能查看所有索引分片的数据
基本查询和复合查询页面:
这两个页面做数据检索,基本查询页面仅提供简单的查询并不能修改数据,复合查询页面提供编写RESTful接口风格的请求,来对Elasticsearch中的数据进行各种增删改查等操作请求,其页面分别如下:
基本查询页面
复合查询页面
3、基本查询
基本查询页面可以对数据进行简单的查询。
查询关键字有三种:分别是:must,should,must_not
- must子句:文档必须匹配must查询条件,相当于“=”;
- should子句:文档应该匹配should子句查询的一个或多个;
- must_not子句:文档不能匹配该查询条件,相当于“!=”;
如下图基本查询实例:
默认返回结果使用table展示,即表格形式,还有json、csv形式展示
其中检索条件有诸多,如下图:
通常term表示精确匹配,wildcard : 通配符匹配 prefix:前缀匹配,range区间查询,如使用wildcard查找带有“粤BN69”的数据:
其它的检索条件也可以尝试检索下
4、复合查询
复合查询页面提供编写RESTful接口风格的请求,使用json进行复杂的查询,也可发送put请求新增及更新索引,使用delete请求删除索引等等来对Elasticsearch中的数据或者索引进行各种增删改查等操作请求。
ES以RESTFul风格来命名API的, 其API的基本格式类似如下:
以http来决定请求的方法或者动作: 常用的有GET/PUT/POST/DELETE
4.1查询数据
比如我们查询st_face这个索引,通过索引类型face_info(这里的索引类型类似于mysql数据库中创建的索引),搜索分片属性为time的字段,如下图效果:
4.2插入数据
插入数据使用POST或者PUT方法,只是POST方法为自动生成id,而PUT方法需要指明id,如下图实例:
POST方法
PUT方法:
4.3修改数据
4.4删除数据
删除数据使用DELETE方法,实例如下:
注:
Head插件中编写json发送请求比较复杂和不方便, 可以使用postman或者python ElasticSearch模块提供的API等工具进行请求的发送,来实现对ElasticSearch的数据和索引进行增删改查。
5、Python ElasticSearch模块
Python Elasticsearch模块是Python的一个第三方模块库,需要手动安装,如果已经安装了pip工具,就可以直接通过命令:pip install elasticsearch一键安装。Elasticsearch API封装并提供了可操作Elasticsearch的几乎所有动作,包括常用的Elasticsearch数据的增删改查和索引操作。
以下是一些参考文档地址:
Elasticsearch官方API文档地址:
https://www.elastic.co/guide/en/elasticsearch/reference/current/search.html
Elasticsearch模块的使用:
https://www.cnblogs.com/xiao987334176/p/10130712.html
下面通过一个实例编写脚本,实现连接Elasticsearch,并批量向Elasticsearch数据库中的st_face索引中写入数据,在PyCharm中编辑如下代码:
执行完成后,在Elasticsearch中查看st_face索引中刚刚批量插入的数据,如下: