我有这样的文件:
{ name : "name1",
age : 30,
address :[{street : "st1" , no : 10},
{street : "st2", no : 20},
{street : "st3", no : 20}]
}
{ name : "name2",
age : 31,
address :[{street : "st2" , no : 10},
{street : "st3", no : 20},
{street : "st10", no : 20}]
}
我想发一个查询来查找记录,在它们的地址数组中都是“st1” 和“st2”存在。此查询应返回上例中的第一个文档。
查找“st1”和“st2”中包含地址的所有文档。我写了这个不返回任何内容的查询。
{
"query": {
"nested": {
"path": "address",
"query": {
"bool": {
"must": [
{
"term": {
"address.street": "st1"
}
},
{
"term": {
"address.street": "st2"
}
}
]
}
}
}
}
}
如何撰写此查询?
答案 0 :(得分:0)
我可以找到一种方法,在我的同事的帮助下为所提到的问题编写查询。它可能不是最佳解决方案,但它的工作原理。
{
"query": {
"bool": {
"must": [
{
"query": {
"nested": {
"path": "address",
"query": {
"term": {
"address.street": "st1"
}
}
}
}
},
{
"query": {
"nested": {
"path": "address",
"query": {
"term": {
"address.street": "st2"
}
}
}
}
}
]
}
}
}
如果您知道更优的解决方案,请分享。