使用 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
中使用了错误的过滤器 - 我不应该在那里提供嵌套过滤器,但它应该是一个术语过滤器。更改它似乎可以解决我的问题。
前段时间我有一个
"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
中使用了错误的过滤器 - 我不应该在那里提供嵌套过滤器,但它应该是一个术语过滤器。更改它似乎可以解决我的问题。