黑白客 发表于 2021-7-28 19:53

es基本语句详解 查询语句详解

@(es基本语句详解 查询语句详解)
## 声明
本文涉及的es, elasticsearch-head, kibana, ik分词器的安装配置可以参考我的其它博客
本文主要参考狂神说java视频课程编写。主要是为了巩固学习,复习方便。
## Rest风格
![在这里插入图片描述](https://img-blog.csdnimg.cn/d1bdcd42b2d04676b6c416012b6511c6.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
## 索引的基本操作
### 1. 创建一个索引
PUT /索引名/(可选)类型名/文档id
{请求体}
![在这里插入图片描述](https://img-blog.csdnimg.cn/18d95ae578054c6f87e6703ea67cd072.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
### 2. 查看索引 我们使用elasticsearch-head
![在这里插入图片描述](https://img-blog.csdnimg.cn/40e9b9abd01c4176ad8c328a464211c4.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/3839663c78d3434f90a2aced15e9eded.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
查看索引默认类型
![在这里插入图片描述](https://img-blog.csdnimg.cn/7cc7ab172c5440c18975640237b66541.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)


到这里:完成了增加索引! 数据也成功的添加了
### 3. 删除索引
通过DELETE 命令实现删除,根据你的请求来判断删除索引还是删除文档记录
![在这里插入图片描述](https://img-blog.csdnimg.cn/e21c0e78810443cfa6d3cae7612c9b4b.png)
4. 创建索引类型mappings
我们创建时 创建了name类型,那需不需要指定类型呢。
下面是 es中的数据类型,我们可以不指定类型,es会帮我们默认选择类型
![在这里插入图片描述](https://img-blog.csdnimg.cn/35a4a9af85fb49a3802743d71364a445.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)![在这里插入图片描述](https://img-blog.csdnimg.cn/c63aa45d6b204aaabd2dc5496cd5c627.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
### 其它命令
1. 查看健康状态
![在这里插入图片描述](https://img-blog.csdnimg.cn/df8247edc1d843cd8d6f95bd69e231a2.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
2. 查看es中index索引, docs.count文档数量等信息
![在这里插入图片描述](https://img-blog.csdnimg.cn/ccc6adf1181c4b30aa9ffdf59de5ef60.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
通过GET _cat/可以获取es的当前的很多信息!
5. 修改索引中的某个字段类型,
                1. 创建一个中间索引
                2. 向中间索引备份源索引的数据(mapping)
                3. 查询确认数据是否copy过去
                4. 删除有问题的索引
                5. 重新创建同名的索引(★字段类型修改正确★)
                6. 从中间索引还原到源索引的数据
                7. 删除中间索引
## ==文档的基本操作(重点)==
### 添加数据
![在这里插入图片描述](https://img-blog.csdnimg.cn/0f5fd18fcc1547a7a6f0273d30d51122.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)


### 修改文档
下面两种方法,会将文档中指定位置的值替换。没有传递的值会被置为空
![在这里插入图片描述](https://img-blog.csdnimg.cn/816877f197cb4790ac7a5902f62f7c7e.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/83d83f0ddfc4450cab1759f77f290c3d.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
推荐的方法:加update修改方法,只会修改提交的值,没有提交的值不会修改
![在这里插入图片描述](https://img-blog.csdnimg.cn/eeeefea9c70f4cb99abbc77d29fb6496.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
### 删除文档
直接指定文档即可
![在这里插入图片描述](https://img-blog.csdnimg.cn/d1219a4ae94f4f408aadaeb3039f229f.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
### 查找(重重重点)
#### 通过id查找
![在这里插入图片描述](https://img-blog.csdnimg.cn/bd9e2a4da2c34839b319ef9edcb3210f.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
#### 通过某个字段查找
![在这里插入图片描述](https://img-blog.csdnimg.cn/465265dad7104bbea4a4ba8d039680c5.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
#### 指定条件查找
hit:索引和文档的信息,查询结果的总数,然后就是查询出来的具体的文档,数据中的东西都可以遍历出来了,包括分数score判断谁最符合结果![在这里插入图片描述](https://img-blog.csdnimg.cn/a0534a40b58442db9af6e249ee842fdd.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/dd7c6d48f7864beb91fd22ac6010f64c.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
#### 结果过滤
![在这里插入图片描述](https://img-blog.csdnimg.cn/e5f3d697ecab46ed836b820447826562.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)我们之后使用java操作es,所有的方法都是这里的key
#### 排序
![在这里插入图片描述](https://img-blog.csdnimg.cn/00e840a60fc04c29958169db8e5224b9.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)reason: 经过查证是字段col54类型为Text格式,然后涉及到了聚合排序等功能。没有进行优化,也类似没有加索引。没有优化的字段es默认是禁止聚合/排序操作的。所以需要将要聚合的字段添加优化
正确的
![在这里插入图片描述](https://img-blog.csdnimg.cn/1b538dbebdd74e549c3e467f85c4d6d9.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
#### 分页查询
分页查询   数据下标还是从0开始
![在这里插入图片描述](https://img-blog.csdnimg.cn/26a28eecca1849bc8aef2d9685d5142f.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
#### 多条件或与非查找
布尔值查询--多条件查询
must命令:所有的条件都要符合,and
![在这里插入图片描述](https://img-blog.csdnimg.cn/55776f02c408477e894d3b8a2aad842d.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
should 或操作
![在这里插入图片描述](https://img-blog.csdnimg.cn/ecc25dea553d49a2920d0f85e17e1855.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
must_not 非操作
![在这里插入图片描述](https://img-blog.csdnimg.cn/04d53cff40ed458e9bb64f78c9a52354.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)

#### 过滤器:范围查找
![在这里插入图片描述](https://img-blog.csdnimg.cn/f3e5e74eca9c48f2a15f3de71a5a475e.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
lt : 小于
gt : 大于
lte : 小于等于
gte : 大于等于
匹配多个条件:
多条件使用空格进行分割就可以
只要满足其中一个就可以查出
可以根据权重分支score 判断
![在这里插入图片描述](https://img-blog.csdnimg.cn/90ea175057d742bdbc730583cfb52abf.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
#### 精确查找
term 查询是直接通过倒排索引指定的字条进程精确查找!
![在这里插入图片描述](https://img-blog.csdnimg.cn/5aa2abc3da8b4b558108b5f4ef936f55.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
创建demo索引,一个是text类型,一个是keyword类型
![在这里插入图片描述](https://img-blog.csdnimg.cn/3cc0c9cd5eca4b93836a9732d105e0e4.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://img-blog.csdnimg.cn/d333e8a3d22f4d22ad166d9fca1c16fa.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)使用keyword
![在这里插入图片描述](https://img-blog.csdnimg.cn/5169b7f3e62f4d539f9e8281a1c4b46e.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)使用standard可以看到被拆分了
![在这里插入图片描述](https://img-blog.csdnimg.cn/3a6e15245a8a4ea497c1c68e951fa184.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)使用term
一下两个查询,第一个根据name 是txt类型。所以只要有一个值,就会被匹配到。
第二个是根据desc 是keyword类型。 必须完全匹配才可以查询到
![在这里插入图片描述](https://img-blog.csdnimg.cn/4033e754f60a4757b208de0afaa9f395.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)![在这里插入图片描述](https://img-blog.csdnimg.cn/626b971ace0f48b1a8c04c71e88528fb.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)得出结论:keyword字段类型不会被分词器解析
多个值匹配的精确查询
![在这里插入图片描述](https://img-blog.csdnimg.cn/ad24fd67fc694d4096c7fac42fcd37bd.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
#### 高亮查询
![在这里插入图片描述](https://img-blog.csdnimg.cn/47be21e5514c40ac82cf591b8b66441b.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)
自定义查询
![在这里插入图片描述](https://img-blog.csdnimg.cn/84f65ef68dea475eb3b0192ebbea44fb.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzQ0ODUwNDg5,size_16,color_FFFFFF,t_70)

nekotann 发表于 2021-7-28 20:17

受教了,非常感谢lz

yxn4065 发表于 2021-7-28 20:39

挺不错的

urbadman 发表于 2021-7-30 13:14

最近正在学习,不错
页: [1]
查看完整版本: es基本语句详解 查询语句详解