扫码阅读
手机扫码阅读

Elasticsearch(ES)搜索结果排序、分页和高亮

79 2024-07-17

我们非常重视原创文章,为尊重知识产权并避免潜在的版权问题,我们在此提供文章的摘要供您初步了解。如果您想要查阅更为详尽的内容,访问作者的公众号页面获取完整文章。

查看原文:Elasticsearch(ES)搜索结果排序、分页和高亮
文章来源:
springboot葵花宝典
扫码关注公众号
摘要 - Elasticsearch(ES)搜索结果排序、分页和高亮

今日目标

掌握DSL查询文档排序、分页和高亮。

1.排序

Elasticsearch默认使用相关度得分(_score)排序,同时支持自定义字段排序,包括keyword类型、数值类型、地理坐标类型和日期类型等。

1.1.普通字段排序

普通字段排序支持多个排序条件,排序条件数组与query标签平行,按声明的顺序依次排序。

1.2.排序示例

举例完成酒店数据根据用户评价降序,价格升序排序的操作。

2.地理坐标排序

地理坐标排序根据文档中geo_point类型字段与目标坐标点的距离进行排序。

2.1.地理坐标排序示例

实例演示如何对酒店数据按照与某位置坐标的距离进行升序排序。

3.分页

Elasticsearch默认返回前10条数据,通过修改from和size参数控制返回的结果,类似于MySQL的LIMIT语句。

3.1.基本的分页

展示如何使用from和size参数进行基本的分页查询。

3.2.深度分页问题

讨论了在查询深度分页数据时产生的性能问题,以及Elasticsearch限制from + size超过10000的请求。

解决方案包括:

  • search after:支持无上限分页,推荐使用。
  • scroll:不推荐使用,有额外内存消耗并且结果非实时。

4.高亮

高亮显示通过为文档关键字添加标签实现,要求搜索条件包含关键字且字段必须与搜索指定字段一致。

4.1.高亮原理

解释了高亮显示的概念和实现步骤。

4.2.实现高亮

介绍了高亮显示的具体语法。

4.3.高亮示例

提供了一个高亮显示的实际例子。

总结

讨论了分页查询的不同实现方案及其优缺点,并简述了查询的DSL包含的属性。

想要了解更多内容?

查看原文:Elasticsearch(ES)搜索结果排序、分页和高亮
文章来源:
springboot葵花宝典
扫码关注公众号