elasticsearch - 如何添加多个字段以对ElasticSearch Java API中的热门匹配进行排序?

标签 elasticsearch

我知道ES支持按多个字段对热门歌曲进行排序,例如本文所建议的sort: ["_score", "datetime"]:https://discuss.elastic.co/t/top-hits-query-with-same-score/107018
但是如何使用Java API做到这一点?AggregationBuilders.topHits().sort()仅接收一个字段作为参数。
我应该使用
enter image description here
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/

相关文章:

python - 将python代码内列表中的doc计数添加到elasticsearch中的字段

elasticsearch - kibana 更改日期时间字段

elasticsearch - 我可以知道 "more like this"查询的选定术语吗

elasticsearch - 如何在 kibana 中创建 filebeat 索引模式?

elasticsearch - Spring Boot不会初始化Elasticsearch

amazon-web-services - RequestError : TransportError(400, u'mapper_parsing_exception', u'解析失败')

python - 将 Twitter 导入 Elasticsearch 时出现 Illegal_argument_Exception

elasticsearch - 为什么对于不同索引的相同查询,elasticsearch 返回的结果差异很大?

sorting - Elasticsearch 排序不起作用

elasticsearch - Elasticsearch DSL:聚合