具有两个不同索引的elasticsearch中的不同行为

时间:2015-10-23 20:39:20

标签: elasticsearch filter mapping

我有两种不同的行为,两种查询完全相同。

在我的第一个查询中, 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而不是品牌来修复此更改重新创建索引。我知道我没有解决问题的根源但这很有效。

0 个答案:

没有答案