如何在ElasticSearchJavaAPI中添加多个字段来排序热门搜索?

sg3maiej  于 2021-06-14  发布在  ElasticSearch
关注(0)|答案(1)|浏览(879)

我知道es支持按多个字段对热门内容进行排序,比如 sort: ["_score", "datetime"] 本帖建议:https://discuss.elastic.co/t/top-hits-query-with-same-score/107018
但是如何使用javaapi呢?
这个 AggregationBuilders.topHits().sort() 只接收一个字段作为参数。
我应该用吗

和sortbuilder作为参数?
如果是的话, SortBuilder 请求一个queryshardcontext参数,我不知道如何创建它。我以前从没用过。其他请求都没有使用此 QueryShardContext .
有没有什么简单的方法,比如,把一组字段传入 sort() ?
提前谢谢!

rqenqsqc

rqenqsqc1#

有超载的 TopHitsAggregationBuilder.sort() 方法,即 String name ,即字段的名称,因此可以这样做:

TopHitsAggregationBuilder thabuilder = AggregationBuilders.topHits("top");
thabuilder.sort("datetime", SortOrder.DESC);
thabuilder.sort("field2", SortOrder.ASC);
...

所有sort调用都将向top hits聚合添加一个新的sort组件。

相关问题