查询需求:要 商品id='123' 且 属性不包含A 且 属性不包含B的商品数据
错误的方式1:
正确的方式2:
方式2查询出来是符合预期的,但是不太明白 方式1的错误原因是什么
错误的方式1:
{
"from":0,
"size":100,
"query": {
"bool": {
"must": [
{
"term": {
"productId": {
"value": "8a80908389d39bc70189d8cc4d7901f8"
}
}
},
{
"bool": {
"must": [
{
"bool": {
"must_not": [
{
"match": {
"proAttrValueIds": "8a80908389dd65c70189ddfcbaae0005"
}
}
]
}
},
{
"bool": {
"must_not": [
{
"match": {
"proAttrValueIds": "8a8090838952ed2b01895377cce900a8"
}
}
]
}
}
]
}
}
]
}
}
}
正确的方式2:
{
"from":0,
"size":100,
"query": {
"bool": {
"must": [
{
"term": {
"productId": {
"value": "8a80908389d39bc70189d8cc4d7901f8"
}
}
},
{
"bool": {
"must_not": [
{
"bool": {
"must": [
{
"match": {
"proAttrValueIds": "8a80908389dd65c70189ddfcbaae0005"
}
},
{
"match": {
"proAttrValueIds": "8a8090838952ed2b01895377cce900a8"
}
}
]
}
}
]
}
}
]
}
}
}
方式2查询出来是符合预期的,但是不太明白 方式1的错误原因是什么
1 个回复
Charele - Cisco4321
赞同来自:
上面的好像是对的
商品id='123' ---> 条件1
不包含A且不包含B ---> 条件2
上面的刚好是条件1+条件2
下面的是
包含A且包含B ---> 条件3
条件1 + 取反(条件3)
就是条件1 + 不是“包含A且包含B”