目录:
(1)搜索结果处理-排序
(2)搜索结果处理-分页
(3)搜索结果处理-高亮
(1)搜索结果处理-排序
评分降序、价格升序查询
第二
第三
一旦进行了排序_score就没有值了
(2)搜索结果处理-分页
这种分页跟MySQL很像,,但是它的底层原理,有很大的差别,ES底层采用倒排索引,它的结构是不利于做分页的,实际上采用的是逻辑上的分页,比如查999到1000的数据,对ES来讲它或查询0到1000的所有数据,然后去截取990-1000的部分
这种截取在单点查询的时候没有问题,但是ES为了存储更多的数据,ES做了集群
ES做了集群,ES把数据进行了拆分放到不同的机器上,拆分出来的每一分叫做一个分片,每一个分片上的数据是不一样的,要查询990-1000的数据,就不知道是哪一个分片的前1000条数据了
结果集上限:产生深度分页问题
search after:搜索是必须先排序,比如说按照价格排序,排序后就有了顺序,比如说先查询0-10条数据,第二次查询接下来10条的时候,会记录第十条排序的价格值,再次查询的时候可以从这个价格值往后去查询 有一个缺点,知道了上一次分页查询的最后一条数据值,往后查,不能够往前查询,数据只能往后分页,不能往前分页
scoll:查询方式是一个快照,第一次查询的时候,我把所有的数据都给你缓存起来,将来你要查询的时候,我再给你截取你需要的部分,这种方式对内存的消耗方式是非常大的不推荐使用 它形成了快照,当你更新了一条文档数据,你这条快照会更新吗,查询到的数据是旧的数据,没有办法查询到实时的数据
第一页:可以看到10条数据:
第二页:显示10条数据
第三页:
(3)搜索结果处理-高亮
pre_tag等可以提前不写默认事假em标签
ES搜索的字段必须与高亮的字段必须一致,如果不一致,需要添加require_field_match,默认是高亮字段和搜索字段不匹配