gpt4 book ai didi

ElasticSearch - 仅获取匹配的嵌套对象与搜索响应中的所有顶级字段

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

假设我有以下文档:

{
id: 1,
name: "xyz",
users: [
{
name: 'abc',
surname: 'def'
},
{
name: 'xyz',
surname: 'wef'
},
{
name: 'defg',
surname: 'pqr'
}
]
}

我只想在搜索响应中获取具有所有顶级字段的匹配嵌套对象。我的意思是如果我搜索/过滤名称为“abc”的用户,我想要以下响应

{
id: 1,
name: "xyz",
users: [
{
name: 'abc',
surname: 'def'
}
]
}

我该怎么做?

引用:select matching objects from array in elasticsearch

最佳答案

如果您同意拥有除嵌套字段之外的所有根字段,然后在嵌套字段中仅匹配内部匹配项,那么我们可以通过指定稍微复杂一些的源过滤参数来重复使用之前的答案:

{
"_source": {
"includes": [ "*" ],
"excludes": [ "users" ]
},
"query": {
"nested": {
"path": "users",
"inner_hits": { <---- this is where the magic happens
"_source": [
"name", "surname"
]
},
"query": {
"bool": {
"must": [
{
"term": {
"users.name": "abc"
}
}
]
}
}
}
}
}

关于ElasticSearch - 仅获取匹配的嵌套对象与搜索响应中的所有顶级字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40779957/

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