ElasticSearch 笔记四(关于文档的基本操作花式查询操作) 以及keyword ,text 类型的理解。高亮查询

345 阅读3分钟

这是我参与8月更文挑战的第29天,活动详情查看:8月更文挑战 @TOC 这里的数据是接着上篇基础回顾的数据基础做的复杂操作

复杂查询

我们在使用mysql 的时候,经常容易出现一些复杂的查询,如:排序,分页,高亮,模糊查询,精准查询 在这里插入图片描述 上面的查询是一个精写的,我们可以拆开查询就是 在这里插入图片描述 在这里插入图片描述 我们再次查询一下“娇娇”这个词。 在这里插入图片描述 在这里插入图片描述

hit里是什么?

hit 里主要是 索引和文档的信息 查询的结果总数 查询出来的具体文档,数据中的东西都可以遍历出来了 分数:我们可以通过来判断谁更加符合结果。

这是我们现在里面有的数值

在这里插入图片描述

需求:假如我们现在要查出来的数据只出现 name不出现age

在这里插入图片描述

如果我们用Java来写的话,所有的方法和对象就变成了key

排序操作需求,假设我们现在用age 来排序 在这里插入图片描述 分页查询 在这里插入图片描述 from 是开始值,size 是结束值。 布尔值查询,多条件查询 must 命令 ,表示所有条件都要符合。 对应mysql 中的where id =xxx and name=xxx 在这里插入图片描述 should 相当于mysql 中的or 或者的意思。两个条件满足一个即可。 在这里插入图片描述 must_not查询不是 某个字段的 例子 在这里插入图片描述 在查询的时候加过滤条件的 需求假如我们现在需要查询名字叫娇娇,过滤条件是年龄大于10 岁

在这里插入图片描述 匹配多个条件的 需求假如查我们的tags 里面的 字段匹配 在这里插入图片描述

精确查询! trem 查询是直接通过倒排索引指定的词条进程精确查找的! 关于trem 和 match 的区别 trem ,直接查询精确的。是代表完全匹配,即不进行分词器分析,文档中必须包含整个搜索的词汇。 案例

在这里插入图片描述

match 会使用分词器解析!(会先分析文档,在通过文档进行查询)也可以理解为模糊查询

match 查询会先对搜索的词进行分词,分词完毕后再逐个对分词的结果进行匹配,因此相比于term 的精确搜索,match 是分词匹配搜索。 案例 只要搜索词的分词集合中的一个或多个存在于文档中即可。假如我们要查名字里有“张”这个概念的时候。 在这里插入图片描述 由于我的数据里有两个名字一样的,所以出来的分数是一样的。

**字段类型keyword 和text 的理解,结合代码 **

先put 几行数据 在这里插入图片描述 添加字段 在这里插入图片描述 查看 在这里插入图片描述 默认情况下keyword 是不会被分词的 在这里插入图片描述 我们可以试试在我们的代码里查询看一下 当我们是 term 查询 +text 的时候还不是精确查找。说明 text 可以被分词器分词 在这里插入图片描述 当是 trem +keyword 的时候就只能输入我们desc 里有的字段了

在这里插入图片描述 在这里插入图片描述 trem + keyword = 精确查找

keyword 不会被分词器分解。

多个值匹配的精确查询

方式一,直接用 terms 方法 在这里插入图片描述

方式二 在这里插入图片描述 高量查询

在这里插入图片描述 我们也可以设置自己的格式

在这里插入图片描述 总结 匹配查询 按照条件匹配 精确匹配 区间范围匹配 匹配字段过滤 多条件查询 高亮查询