• 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数组里面的条件为准

    写此谨记!!!

  • 相关阅读:
    关于__attribute__[转]
    Boost Posix Time
    c++ explicit构造函数[转]
    C++11 多线程:数据保护[转]
    C++ int,char,string,CString类型转换(整理总结)
    C和C++如何来编写时间的程序[转]
    设置CentOS防火墙开放端口
    SSH框架
    20060518: Alert!
    yum命令时出现Error: xz compression not available问题。
  • 原文地址:https://www.cnblogs.com/chenmz1995/p/11446422.html
Copyright © 2020-2023  润新知