gpt4 book ai didi

elasticsearch - 查询包含嵌套数组 Elasticsearch 中所有值的文档

转载 作者:行者123 更新时间:2023-12-02 22:12:37 28 4
gpt4 key购买 nike

我正在尝试查询嵌套数组包含查询中传递的所有元素的文档。

索引存储组,每个组都有一个成员列表。我想查询包含给定成员的所有组。

映射:

"properties" : {
"members" : {
"type" : "nested",
"properties" : {
"name" : {
"type" : "keyword"
}
}
},
"name" : {
"type" : "text"
}
}
}
}

示例内容:

[
{
"name" : "group 1",
"members" : [
{
"name" : "alice"
},
{
"name" : "bob"
}
]
},
{
"name" : "group 2",
"members" : [
{
"name" : "alice"
},
{
"name" : "foo"
},
{
"name" : "bob"
}
]
},
{
"name" : "group 3",
"members" : [
{
"name" : "foo"
},
{
"name" : "bar"
}
]
}
]

我怎样才能找到同时拥有“alice”和“foo”成员的所有组?

我尝试了以下查询,但没有返回任何内容:

GET /group/_search
{
"query": {
"nested": {
"path": "members",
"query": {
"bool": {
"must": [
{"match": {"members.name": "alice"}},
{"match": {"members.name": "foo"}}
]
}
}
}
}
}

我也尝试过使用 term 而不是 match 但它没有给出任何结果。

最佳答案

您可以使用 nested within a must 子句。像这样:

GET /group/_search
{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "members",
"query": {
"term": {
"members.name": {
"value": "alice"
}
}
}
}
},
{
"nested": {
"path": "members",
"query": {
"term": {
"members.name": {
"value": "foo"
}
}
}
}
}
]
}
}
}

关于elasticsearch - 查询包含嵌套数组 Elasticsearch 中所有值的文档,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57365394/

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