Я пытаюсь запросить документы, в которых вложенный массив содержит все элементы, переданные в запросе.
Индекс хранит группы, и каждая группа имеет список членов. Я хочу запросить все группы, содержащие заданных членов.
Отображение:
"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
, но это не дало результатов.