在完成安装Elasticsearch v7.3 之后,在开始学习Elasticsearch 基本概念和CRUD 实际操作之前,建议先安装2个小的、方便使用的快捷工具。
- 一个是本文重点推荐的Elasticsearch Head Chrome插件,可以认为是学习和使用Elasticsearch搜索引擎的必备利器。
- 另一个是Postman 工具,Postman是一款功能超级强大的工具,用于发送 HTTP 请求,支持GET/PUT/POST/DELETE方法。在开发微服务项目的时候,调试API接口,也经常使用这一工具。
- 除了可以使用Postman 第三方工具、Kibana Dev Tools之外,还可以使用IntelliJ IDEA中自带的HTTP Request工具来操作Elasticsearch。这个工具的优点是所有调试脚本可以和Java项目源码保存在一起,方便重复使用。
一、Elasticsearch Head Chrome浏览器插件安装和使用
ElasticSearch-head就是一款能连接ElasticSearch搜索引擎,并提供可视化的操作页面对ElasticSearch搜索引擎进行各种设置和数据检索功能的管理插件,如在head插件页面编写RESTful接口风格的请求,就可以对ElasticSearch中的数据进行增删改查、创建或者删除索引等操作。类似于使用navicat工具连接MySQL这种关系型数据库,对数据库做操作。
关于Elasticsearch Head 插件的安装,可以访问github:
https://github.com/mobz/elasticsearch-head
针对新版的Elasticsearch 7.x,建议最简便的安装是:安装Elasticsearch head chrome 插件。
下面是Elasticsearch head chrome 插件的完整安装过程。
1、Elasticsearch Head 插件下载
https://download.csdn.net/download/vbnetfun/11574864
elasticsearch-head-chrome插件,谷歌扩展程序,导入即能使用,不需要任何其他配置,方便快捷。
2、下载完成之后,解压缩
3、 打开Chrome浏览器的扩展程序窗口
如下图所示:
4、点击【加载已解压的扩展程序】按钮,选择刚刚解压缩的elasticsearch-head-chrome 插件目录
5、使用Elasticsearch Head Chrome 插件
点击该插件图标,默认自动打开 http://localhost:9200/。可以查看Elasticsearch 集群中的索引信息
上图为Elasticsearch 集群概览页面效果,下面简单进行说明。
(1)集群健康值。
Elasticsearch cluster 中其实有专门的衡量索引健康状况的标志,分为三个等级:
green,绿色。这代表所有的主分片和副本分片都已分配。你的集群是 100% 可用的。
yellow,黄色。所有的主分片已经分片了,但至少还有一个副本是缺失的。不会有数据丢失,所以搜索结果依然是完整的。不过,你的高可用性在某种程度上被弱化。如果更多的分片消失,你就会丢数据了。所以可把 yellow 想象成一个需要及时调查的警告。
red,红色。至少一个主分片以及它的全部副本都在缺失中。这意味着你在缺少数据:搜索只能返回部分数据,而分配到这个分片上的写入请求会返回一个异常。
如果只有一台主机的话,其实索引的健康状况也是 yellow,所以上图显示为yellow。因为一台主机,集群没有其他的主机可以replica 副本,所以说,这就是一个不健康的状态,因此集群也是十分有必要的。
(2)集群中的索引(index)
表示在Elasticsearch已经创建的索引(index),包含了索引的名称、索引的大小(size)、索引的数据量(docs),并且通过【信息】和【动作】可以查看索引信息或者给索引建别名。
(3)Elasticsearch节点
上图中的带有感叹号的Unassigned表示未分配的节点,带有星号的表示是主节点,其节点名称叫:THINKPAD-T460P,并能查看节点信息。
(4)索引分片
Elasticsearch数据就存储在这些分片中。
(5)查看Elasticsearch相关的信息和刷新head插件
如查看Elasticsearch版本信息,如下图:
Elasticsearch cluster 集群信息。
(6)索引页面
索引页面能看到当前Elasticsearch中已经创建的索引,这里的索引类似于传统关系型数据库中的一张张表,并且可以在该页面上新建索引。
(7)数据浏览页面
数据浏览页面能查看所有索引分片的数据。
(8)基本查询和复合查询页面
这两个页面做数据检索,基本查询页面仅提供简单的查询并不能修改数据,复合查询页面提供编写RESTful接口风格的请求,来对Elasticsearch中的数据进行各种增删改查等操作请求,其页面分别如下:
基本查询页面
基本查询页面可以对数据进行简单的查询。
查询关键字有三种:分别是:must,should,must_not。
must子句:文档必须匹配must查询条件,相当于“=”;
should子句:文档应该匹配should子句查询的一个或多个;
must_not子句:文档不能匹配该查询条件,相当于“!=”;
复合查询页面
复合查询页面提供编写RESTful接口风格的请求,使用json进行复杂的查询,也可发送put请求新增及更新索引,使用delete请求删除索引等等来对Elasticsearch中的数据或者索引进行各种增删改查等操作请求。
Head插件中编写json发送请求比较复杂和不方便,可以使用postman或者Kibana模块提供的API等工具进行请求的发送,来实现对ElasticSearch的数据和索引进行增删改查。
二、Postman的使用
在form元素的语法中,EncType表明提交数据的格式。用 Enctype 属性指定将数据回发到服务器时浏览器使用的编码类型。
例如: application/x-www-form-urlencoded: 窗体数据被编码为名称/值对。这是标准的编码格式。
multipart/form-data:窗体数据被编码为一条消息,页面上的每个控件对应消息中的一个部分,这个一般文件上传时用。
text/plain:窗体数据以纯文本形式进行编码,其中不含任何控件或格式字符。
form的enctype属性为编码方式,常用有两种:application/x-www-form-urlencoded和multipart/form-data,默认为application/x-www-form-urlencoded。
1、form-data
就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来表名文件类型;content-disposition,用来说明字段的一些信息。
由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。
2、x-www-form-urlencoded
当action为get时候,浏览器用x-www-form-urlencoded的编码方式把form数据转换成一个字串(name1=value1&name2=value2…),然后把这个字串append到url后面,用?分割,加载这个新的url。
3、raw
可以上传任意格式的文本,可以上传text、json、xml、html等。
4、binary
相当于Content-Type:application/octet-stream,从字面意思得知,只可以上传二进制数据,通常用来上传文件,由于没有键值,所以,一次只能上传一个文件。
三、使用IntelliJ IDEA中HTTP Request工具轻松操作Elasticsearch 7.x
除了可以使用Postman 第三方工具、Kibana Dev Tools之外,还可以使用IntelliJ IDEA中自带的HTTP Request工具来操作Elasticsearch。这个工具的优点是所有调试脚本可以和Java项目源码保存在一起,方便重复使用。
在IntelliJ IDEA任意项目中,右键菜单 - New - New HTTP Request。弹出窗口中,输入http文件名,比如输入 es,点击 OK,文件就创建好并自动打开了。
创建的es.http文件,如下图所示:
打开上述es.http文件,创建一个新索引people,并执行。
注意:
需要在Content-Type: application/json 下面空一行!
另外,请求之间使用 ### (三个#号)将请求分隔开!
新增文档记录:
响应结果:
获取刚刚新增文档:
GET http://localhost:9200/people/_doc/1
测试ik_smart分词器的效果: