elasticsearch 为search_after实现tiebreaker的最佳方法

ohtdti5x  于 5个月前  发布在  ElasticSearch
关注(0)|答案(1)|浏览(40)

_id字段is restricted from use in aggregations, sorting, and scripting。如果需要对_id字段进行排序或聚合,建议将_id字段的内容复制到另一个启用doc_values的字段中。我想知道创建启用doc_values的_id字段副本的最佳方法是什么,主要用于现有索引。
我尝试使用_update_by_query suggested by Val,它似乎是工作,但如果有一个新的文档或更新后的_update_by_query,它不会包括tie_breaker_id。我想避免运行_update_by_query为每一个未来的搜索。考虑运行时间字段,但我们有弹性6.x的索引,它也可以影响搜索性能。

xesrikrc

xesrikrc1#

在Elasticsearch中,search_after通常用于高效地对搜索结果进行分页。当您需要实现tiebreaker以确保在主排序值相等的情况下保持一致的顺序时,您可以使用主排序字段和tiebreaker字段的组合。
这里有一个例子,你可以用search_after实现一个决胜局:
使用多字段Map:为要排序的字段定义多字段Map。这涉及到创建两个字段,一个用于主排序,另一个用于决胜局。

相关问题