4

我必须使用弹性 java 高级休息客户端 api 对嵌套的一级字段进行排序。我能找到这个答案

Elasticsearch 嵌套排序

问题是答案使用 SortBuilder 使用以下代码对嵌套字段进行排序:

SortBuilder sb = SortBuilders.fieldSort("authorList.lastName")
    .order(SortOrder.ASC)
    .setNestedPath("authorList")
    .setNestedFilter(matchFirst);

然而,似乎nestedPath 和 NestedFilter 在 6.3.2 elastic ( deprication info ) 中已被弃用,并且引入了新的 NestedSortBuilder。但是我无法使用它构建查询。谁能解释一下如何使用它,或者给我一个使用它的例子吗?

4

1 回答 1

7

其实很容易。这对我有用:

SortBuilders.fieldSort("bulkOrders.expiryDate").order(SortOrder.asc).setNestedSort(new NestedSortBuilder("bulkOrders"));

这相当于:

"sort": [
        {
          "bulkOrders.expiryDate": {
            "order": "asc",
            "nested": {
              "path": "bulkOrders"
            }
          }
        }
      ]
于 2018-08-03T05:15:04.550 回答