elasticsearch must 和 should 并列的情况


  在elasticsearch中如果要对几个字段进行查询,然后其中有一个字段可以有多个取值的时候,正常想到的要用should,其实就是或的关系。但是正确的做法,应该是把should并列的条件整合到一个bool查询,然后嵌套到must之中去。而不是和must并列。项目中,也用了错误的写法,然后发现must和should同时存在的时候,should将会变得不起作用。

 

     例如:

{
    "bool":{
        "must":[
            {
                "match_phrase":{
                    "camera_dwlb":{
                        "query":"一类视频监控点",
                        "slop":0,
                        "boost":1
                    }
                }
            }
        ],
        "should":[
            {
                "match_phrase":{
                    "city_name":{
                        "query":"福州市",
                        "slop":0,
                        "boost":1
                    }
                }
            },
            {
                "match_phrase":{
                    "city_name":{
                        "query":"厦门市",
                        "slop":0,
                        "boost":1
                    }
                }
            }
        ],
        "disable_coord":false,
        "adjust_pure_negative":true,
        "boost":1
    }
}

 

以上查询的意思本来是想要福州、厦门摄像机点位类别属性为一类视频监控点,查出来了一个数量,然后我随意的改变should数组里面的查询条件,发现查询的结果总是不变的。都是以must数组里面的条件为准

写此谨记!!!

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM