我正在尝试编写一个查询,该查询将文档与作为对象数组的嵌套对象进行匹配。示例:
{"ListName" : "List 1", "Fruits": [ { "name" : "Apple"}, {"name": "Orange"}, {"name" : "banana"} ] }
我想写一个查询,我根据Fruits数组中的名称得到上面的文档,例如Apple和Orange。
我目前使用相同名称字段中的Apple和Orange匹配名称,而不是每个对象。
{
"query": {
"nested": {
"path": "Fruits",
"query": {
"bool": {
"must": [
{
"term": {
"Fruits.name": "Apple"
}
},
{
"match": {
"Fruits.name": "Orange"
}
}
]
}
}
}
}
}
答案 0 :(得分:3)
您需要在nested
查询中进行两个不同的bool/must
查询,如下所示:
{
"query": {
"bool": {
"must": [
{
"nested": {
"path": "Fruits",
"query": {
"term": {
"Fruits.name": "Apple"
}
}
}
},
{
"nested": {
"path": "Fruits",
"query": {
"match": {
"Fruits.name": "Orange"
}
}
}
}
]
}
}
}