1:在上一篇文章中我们已经做过了创建索引和简单的文档数据的增删改查,今天我们的核心是文档数据的查询,当然在后期我们也会用java数据来操作数据。
上一期,我们的索引库是shopping,今天我们再来回忆一下。
这就是查询索引库中 所有的信息。
接下来我们待条件的去查询索引库中文档的信息
(1)我们可以使用 localhost:9200/shopping/_search?q=title:苹果
(2) 我们也可以使用 localhost:9200/shopping/_search?q=title:果
这是因为在es中它会将我们的title作分词,苹果手机,苹果,手机......这样作为分词,类似于mysql中我们使用模糊查询,但是前面我们也说过正是因为在es中的“倒排索引”的关键我们es服务器查询出来会非常的快,这个条件中的“q“代表着“query”也就是查询的意思,如果大家不明白可以看一下我之前所说的倒排索引的概念,大概就能明白了
倒排索引的概念
在上面的条件查询中我们是在请求路径中去查询数据的这样显然比较麻烦,还有一点就是中文在路径中很容易出现乱码,所以下面我们会在请求体中去查询数据
2 : 在请求体中去查询文档中的数据
这里的match表示匹配的意思
以上俩种方式推荐请求体中参数去查询
3:在请求体中我们还可以查询所有之前我们查询所有使用的命令localhost:9200/shopping/_search
现在我们可以换成在请求体中全查询;请看例子
这里的match_all代表着就是全部查询,但是在实际操作中我们往往只需要一部分数据怎么办呢,在es中当然也是有分页查询的 fort ,size
4:分页查询
这里的from代表着当前第几条数据 size代表着每一页几条数据,大家可以看一下返回的数据里面我们有value:8条数据但是我们只查到了2条。
from=(页码-1)*每一页数据就是=你查到的第几条数据
5:在上面数据中我们查到了的字段可能有些不是我们想要的,接下来我们可以把不需要的字段不让它展示。
上面查询到我们所需要的数据,但是大家都知道,在实际开发中我们可能需要按照什么时间或者什么进行排序,在es'中我们也有排序,请看例子
6:es排序查询
7:多条件查询,范围查询
表示像数据中的and多个条件要注意上面每一个单词的意思我也用中文描述了。
8: 上面展示的是多条件查询现在我们写另一种,表示俩个条件同时满足一个就行有点像数据库中or的用法
我们只需要把must改编成should就可以满足了下面图表示没结果
9: 范围查询在我们的es中也支持范围查询,由于我刚开始仙剑的案例中没有字段和范围查询有关
只需要再上面的哪些查询后面再加一个filter就可以了
10: 全文检索 和完全匹配
(1):全文检索
这里我们能查到所有的与手机相关的数据。
(2):完全匹配
11:聚合操作,就有点像我们mysql中的分组的概念
12:高亮查询,我们通常看见百度我们搜索什么词的时候
13:求平均值
14:最后我们来说一下es中的映射关系,再之前我们的查询中有些可以分词有些不可以分词
1:首先我们需要创建索引库,以及映射关系
查询索引库的信息 表示哪些可以被索引哪些不可以被索引哪些可以被分词,哪些不可以
增加数据:
接下来我们查询,就可以显而易见的看到哪些可以被索引,哪些可以分词,查询
它就不可以分词,但是它可以查的到数据,这就是因为我们再处理映射关系的时候给他设置index为true
最后一种情况,不可以查询到也不可以分词。这就是我们es的重点,再加上我们之前那些聚合查询 ,高亮查询、、、、、、大家多练一下,大家就入门了
总结:大家再练习的时候多练一下,这些新的语法,可能学的时候感觉很绕,但是多练多去理解,就感觉es基础不是很难,如果感觉看了这些还是觉得不理解的话,可以去找一些视频呀之类去学一下。