我知道ES支持按多个字段对热门歌曲进行排序,例如本文所建议的sort: ["_score", "datetime"]
:https://discuss.elastic.co/t/top-hits-query-with-same-score/107018
但是如何使用Java API做到这一点?AggregationBuilders.topHits().sort()
仅接收一个字段作为参数。
我应该使用
和SortBuilder作为参数?
如果是这样,SortBuilder
要求一个QueryShardContext参数,我不知道该如何创建。我以前从未用过。其他请求均未使用此QueryShardContext
。
有没有简单的方法可以做到,例如,只需将字段数组传递给sort()
?
提前致谢!
最佳答案
有overloaded TopHitsAggregationBuilder.sort()
methods,即采用String name
的字段,即字段名称,因此您可以这样操作:
TopHitsAggregationBuilder thabuilder = AggregationBuilders.topHits("top");
thabuilder.sort("datetime", SortOrder.DESC);
thabuilder.sort("field2", SortOrder.ASC);
...
所有排序调用都将向热门匹配中添加一个新的排序组件。
关于elasticsearch - 如何添加多个字段以对ElasticSearch Java API中的热门匹配进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64509231/