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