使用 ES java 库准备嵌套排序过滤器

Preparing nested sorting filter using ES java library

前段时间我有一个。原来问题出在我的查询上。而不是:

"sort": [
   {
      "children.size": {
         "order": "desc",
         "nested_filter": {
            "term": {
               "id": 1
            }
         }
      }
   }
]

我正在使用:

"sort": [
    {
      "children.size": {
        "order": "asc",
        "nested_filter": {
          "nested": {
            "filter": {
              "term": {
                "id": 1
              }
            },
            "path": "children"
          }
        }
      }
    }
]

不正确的查询受到 ES 库 (elasticsearch-1.4.jar) 生成的代码的强烈启发。这是我用来准备查询的排序部分的片段:

FieldSortBuilder mySort = SortBuilders.fieldSort("children.size")
              .setNestedFilter(FilterBuilders.nestedFilter("children", FilterBuilders.termFilter("id", myId)))
              .sortMode("avg")
              .order(SortOrder.ASC);    

将这样的"sort"添加到查询中时,最终结果是不正确的嵌套过滤器。

是否以错误的方式使用了库?我怎样才能轻松克服这个问题?

此问题的答案出现在此处,但不知何故被删除了。无论如何,有人向我解释说我在方法 setNestedFilter 中使用了错误的过滤器 - 我不应该在那里提供嵌套过滤器,但它应该是一个术语过滤器。更改它似乎可以解决我的问题。