gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 03:33:24 26 4
gpt4 key购买 nike

不久前我有一个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);

当这样的“排序”添加到查询中时,最终结果是不正确的嵌套过滤器。

是否以错误的方式使用库?如何轻松解决这个问题?

最佳答案

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

关于java - 使用ES java库准备嵌套排序过滤器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28514382/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com