gpt4 book ai didi

java - 如何使用 Java API 根据多个字段对 Elasticsearch 记录进行排序?

转载 作者:行者123 更新时间:2023-12-01 16:21:44 25 4
gpt4 key购买 nike

我有一个要求,我需要根据两个字段进行排序,其中一个字段是日期类型,并且在排序时它将始终有一个值,另一个字段可能为空或可以包含日期值。我需要根据第一个字段按降序对记录进行排序,第二个字段应该为空。我正在寻找 Java Elasticsearch API 的解决方案

SearchRequest('test').source(SearchSourceBuilder()
.query(QueryBuilders
.boolQuery()
.must(QueryBuilders.boolQuery().should(QueryBuilders.termQuery("name.keyword","george"))).sort(SortBuilders.fieldSort("createdOn").order(SortOrder.DESC)).sort(SortBuilders.scriptSort(Script("doc['updatedOn'].value == null", ScriptSortType.String)))

最佳答案

此解决方案在我的测试代码 (Elasticsearch-7.6.1) 中有效:

.sort(SortBuilders.scriptSort(new Script(ScriptType.INLINE, "expression", "doc['updatedOn'].empty ? 0 : 1", Collections.emptyMap(), Collections.emptyMap()), ScriptSortBuilder.ScriptSortType.NUMBER).order(SortOrder.DESC))

关于java - 如何使用 Java API 根据多个字段对 Elasticsearch 记录进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62255696/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com