我有两种不同的行为,两种查询完全相同。
在我的第一个查询中, must_not 条款未过滤 brand3 , brand4 正在返回brand3和brand4产品。然而,第二个查询must_not正在运行。
第一次查询:
GET firstindex/product/_search
{
"filter":{
"bool": {
"should": [
{"bool": {
"must_not":{ "terms": {"brand.raw": ["brand3,brand4"]}
},
"must":{
"term" : {"retailer" : "retailer1"}
}
}
}
]
}
}
,
"size":10000
}
第二次查询:
GET secondindex/product/_search
{
"filter":{
"bool": {
"should": [
{"bool": {
"must_not": { "terms": {"brand.raw": ["brand1,brand2"]}
},
"must":{
"term" : {"retailer" : "retailer2"}
}
}
}
]
}
}
,
"size":10000
}
品牌的映射是:
"brand":{
"type":"string",
"fields":{
"raw":{
"type":"string",
"index":"not_analyzed"
}
}
}
我卡住了,我能做些什么才能知道发生了什么?
更新
我还尝试从firstindex到first_index创建一个新索引,但它不起作用。最后,我可以使用brand_name而不是品牌来修复此更改重新创建索引。我知道我没有解决问题的根源但这很有效。