我有一个Order对象,其中包含一个Product对象数组。我需要选择那些仅具有产品对象列表的Order对象,这些产品对象带有标志“ isExpired”:true,或者换句话说,没有任何产品对象带有“ isExpired”:false。
我尝试了以下查询:
{
"query": {
"nested": {
"path": "products",
"query": {
"bool": {
"must_not": [
{
"term": {
"products.isExpired": false
}
}
]
}
}
}
}
}
但是,这还会返回具有两个带有true和false标志的乘积的Order对象。
我认为,由于“产品”是一个嵌套文档,并且其索引或单独存储,因此我正在获取至少带有isExpired为false的产品的文档。但是我不确定如何解决这个问题。我绝对不能更改映射,因为嵌套映射可以完美地满足其他查询要求。
我正在使用Elasticsearch 6.3。