前段时间我有issue with sorting results by one of values in nested documents。事实证明问题出在我的查询上。而不是:
"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);
当这样的“排序”添加到查询中时,最终结果是不正确的嵌套过滤器。
以错误的方式使用图书馆?我怎样才能轻松解决这个问题?
答案 0 :(得分:2)
这个问题的答案出现在这里,但不知何故被删除了。无论如何,有人向我解释说我在方法setNestedFilter
中使用了错误的过滤器 - 我不应该在那里提供嵌套过滤器,但它应该是一个术语过滤器。改变这似乎可以解决我的问题。