我有一些关于嵌套查询的问题。这是我的例子。Map是 {"user":"nested"}
.现有数据如下:
{
"user": [
{
"first":"John",
"last":"Smith"
},
{
"first":"Alice",
"last":"White"
}
]
}
如何创建查询以查找满足以下所有条件的文档:
用户的第一个对象,其“first”是“john”,而“last”是“smith”;
用户的第二个对象,它的“第一个”是“爱丽丝”,“最后一个”是“白色”
3条答案
按热度按时间uqjltbpv1#
尝试以下查询:
hrirmatl2#
答案是:
dohp0rv53#
下面的查询是你要找的。你只需要有两个
nested queries
,你提到的每种情况一个,组合在一个bool
使用must
条款。注意,我假设
user.first
以及user.last
都是文字type
有standard analyzer
```POST <your_index_name>
{
"query":{
"bool":{
"must":[
{
"nested":{
"path":"user",
"query":{
"bool":{
"must":[
{
"match":{
"user.first":"john"
}
},
{
"match":{
"user.last":"smith"
}
}
]
}
}
}
},
{
"nested":{
"path":"user",
"query":{
"bool":{
"must":[
{
"match":{
"user.first":"alice"
}
},
{
"match":{
"user.last":"white"
}
}
]
}
}
}
}
]
}
}
}