gpt4 book ai didi

elasticsearch - 内部命中不适用于嵌套过滤器?

转载 作者:行者123 更新时间:2023-11-29 02:46:34 26 4
gpt4 key购买 nike

我刚刚升级到 Elastic Search 1.5.0,到目前为止我还不能生成 inner_hits使用嵌套过滤器,尽管它适用于嵌套查询。

假设我想检索 movie 对象中的内部嵌套对象 actors

当我运行以下嵌套查询时:

语法 1

GET my_index/movie/_search
{
"query": {
"filtered": {
"query": {"match_all": {}},
"filter": {
"nested": {
"path": "actors",
"query": {
"match": {
"actors.id": 12345
}
},
"inner_hits" : {}
}
}
}
}
}

=> 我得到了记录的 inner_hits here , 这很好。

但是当我尝试使用嵌套过滤器 执行等效查询时:

语法 2

GET my_index/movie/_search
{
"query": {
"filtered": {
"query": {"match_all": {}},
"filter": {
"nested": {
"path": "actors",
"filter": {
"term": {
"actors.id": 12345
}
},
"inner_hits" : {}
}
}
}
}
}

=> 我收到以下解析错误

QueryParsingException[[my_index] [nested] requires either 'query' or 'filter' field]

(最后一个查询在我删除 inner_hits 时工作正常 - 当然除了我没有得到内部命中...)

我使用的语法是否有问题,或者 inner_hits 是否尚未使用嵌套过滤器实现?

提前致谢

编辑 3-30-2015

它使用下面由 @mdewit 提供的语法(谢谢!)

语法 3

GET my_index/movie/_search
{
"query": {
"nested": {
"path": "actors",
"query": {
"filtered": {
"filter": {
"term": {"actors.id": 12345}
}
}
},
"inner_hits" : {}
}
}
}

即使此语法不匹配 Nested Filter doc

=> 我仍然不明白语法 2 有什么问题。对我来说这似乎是一个 ES 错误。

编辑 04-22-2015 :修复了 ES 1.5.1 中的错误,请参阅下面的评论

最佳答案

以下似乎有效:

GET my_index/movie/_search
{
"query": {
"nested": {
"path": "actors",
"query": {
"filtered": {
"filter": {
"term": {"actors.id": 12345}
}
}
},
"inner_hits" : {}
}
}
}'

关于elasticsearch - 内部命中不适用于嵌套过滤器?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29251994/

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