操作ElasticSearch的命令都是通过RestFul风格的请求命令去完成的,大致如下图:
使用Kibana演示基础操作
创建一个索引
PUT /索引名/类型名/文档id{请求体}

在head页面上查看数据:

由以上示例可知,我们通过put命令创建了一个索引并添加了文档数据,但是我们并没有给这个索引映射类型,在ElasticSearch中数据有多少的数据类型呢?
ElasticSearch相关的数据类型:
- 字符串类型:text、keyword
- 数值类型:long、integer、short、byte、doule、float、half float、scaled float
- 日期类型:date
- 布尔值类型:boolean
- 二进制类型:binary
- 等等…
创建一个索引不赋值并指定类型

以上json命令只创建了一个test2索引并映射类型查看索引信息
获得这个规则,可以通过get请求获取具体信息。

通过GET命令就可以查看到索引的信息,后面的目标准确到索引就查看索引信息,准确到文档就查看文档信息。
拓展:通过命令es索引情况,get _cat/可以获得es当前的很多信息。
修改文档信息
修改文档信息有两种方式,第一种是通过PUT命令在原来的文档上添加数据进行覆盖,第二种是通过POST进行修改。
(1)PUT覆盖修改(曾经)

使用PUT进行修改有一个弊端,就是他会将所有的数据都进行覆盖,如果你修改的字段有缺漏,则缺漏的部分会被覆盖为空,造成数据的丢失。
(2)POST方式修改,后面要加_update
删除索引
删除索引信息通过DELETE命令来完成。

DELETE操作和GET操作一样,后面的目标精确到文档就删除文档信息,精确到索引就删除索引信息。
复杂查询操作
条件查询
语法:
GET 索引名/类型名/_search?q=字段名:字段值

关于基础条件查询语句的解析:
其中_search后面的q的意思是query,在语法中是一个对象,完整的写法应该如下:

如上图所示,我们可以在query对象中设置很多的参数来完成各种情况下的查询方式。查询的结果中包含一个hits对象,这个对象的参数就包含了所有具体的查询结果。
条件查询_只显示某几个字段
默认情况下的条件查询会将文档的所有字段都查询出来,但是我们可以通过一个_source属性去指定想要查询出来的字段:

由上图可以看到,当我们指定了只查询”name”字段的时候,后面查询出来的信息中就只包含了”name”字段信息。
根据指定字段排序查询

如上图所示,按照age字段进行降序排列,因为我们自定义了按照某种规则进行排序吗,所以之前的排序规则分数就会为Null。
分页查询

我们可以通过设置”from”和”size”参数来设置分页查询的相关信息。
布尔值查询
通过布尔值查询的方式我们可以实现类似于数据库的多条件查询:

例如通过这个must指令就可以实现多条件查询,在上图中,只有同时满足name中包含张三,并且年龄为18的数据才会被查询出。
简单的来说满足这两个条件就会返回true的布尔值然后被查询出来,所以被叫做布尔值查询,相当于sql语句中的where and条件语句。

而should命令则表示后方的两个条件只需要满足其中之一即可,就类似于sql语句中的where or条件语句。

同理,must_not表示查询出不满足条件的数据,例如上图查询出年龄不为18的信息,相当于sql中的not条件语句。
过滤查询操作
在满足多种条件查询的同时,es也支持我们对查询的数据进行进一步的筛选过滤。

通过上图的配置可以实现按照年龄大小进行进一步过滤的操作,
- gte是大于等于操作
- lte是小于等于操作
- gt只表示大于操作
- lt只表示小于操作。
同时,也可以同时设置大于和小于来进行值的区间搜索操作,相当于sql中的between and条件。
匹配多个条件查询
匹配多个条件查询就有点类似于sql中的in关键字。

如图所示,tags是兴趣标签,在数据中是以数组的形式存在的,也就是说有多个值,通过这种方式就可以进行多个值的随意匹配。
精确匹配term
term精确匹配和match的不同:
- term会将条件依据倒排索引进行精确匹配
- match则会将查询条件进行分词然后再匹配。
简单的来说,match会产生类似与模糊查询的效果,而term不会,条件匹配不上即使数据包含查询条件也不会被查询出来。
两个类型text和keyword:
- text会被分词器进行分词
- keyword不会被分词器分词。

高亮查询
ElasticSearch同时也支持高亮查询,他会将查询结果中的查询条件关键字进行自动的高亮显示。

这些mysql也可以做,只是效率比较低
- 匹配
- 按照条件匹配
- 精确匹配
- 区间范围匹配
- 匹配字段过滤
- 多条件查询
- 高亮查询


