这是一个嵌套查询效果很好:
{
"query": {
"nested": {
"query": {
"bool": {
"must":{
"terms" : {
"orderInfo.flightSegment.depCity" : [ "NewYork","London" ]
}
}
}
},
"path": "orderInfo.flightSegment"
}
}
}
另一个想要做同样事情但具有更深嵌套结构的嵌套查询无法获得任何结果:
{
"query" : {
"bool" : {
"must" : {
"nested" : {
"query" : {
"bool" : {
"must" : {
"nested" : {
"query" : {
"bool" : {
"must" : {
"terms" : {
"orderInfo.flightSegment.depCity" : [ "NewYork","London" ]
}
}
}
},
"path" : "orderInfo.flightSegment"
}
}
}
},
"path" : "orderInfo"
}
}
}
}
}
因为可能有一些其他查询参数,所以我使用boolQuery.must来组合不同的参数。 什么时候" NewYork"和"伦敦"两者都存在于ES中,第二个查询可以得到正确答案(" NewYork"或"伦敦"),但如果ES中不存在一个项目(即" NewYork& #34;),查询返回空结果。 为什么第二个查询无法在这种情况下获得结果?