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

    写此谨记!!!

  • 相关阅读:
    调度器2—cat /proc/<pid>/sched内容分析
    调度器1—相关接口和命令行工具
    Java中的String类
    Java中的数组
    代码访问使用Let's Encrypt证书的网站提示certificate has expired的解决方法
    Linux环境Clion使用Protobuf
    PyTorch Dataloader读取时如何在进程之间传输数据
    6 安装Grafana 展示promethues数据
    5 Prometheus relabel配置
    4 PromQL
  • 原文地址:https://www.cnblogs.com/chenmz1995/p/11446422.html
Copyright © 2020-2023  润新知