用于Elasticsearch 6.3.2

时间:2018-08-02 14:54:16

标签: java elasticsearch elasticsearch-nested

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

Elasticsearch nested sorting

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

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

不过,似乎在6.3.2 elastic(deprication info)中已弃用nestedPath和NestedFilter,并引入了新的NestedSortBuilder。但是,我无法使用它来构建查询。谁能解释如何使用它,或者为我指出使用它的示例?

1 个答案:

答案 0 :(得分:1)

实际上很容易。这对我有用:

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

这等效于:

"sort": [
        {
          "bulkOrders.expiryDate": {
            "order": "asc",
            "nested": {
              "path": "bulkOrders"
            }
          }
        }
      ]