【问题标题】:Must query in Should query clause in Elastic Search Query必须在 Elastic Search Query 中的 Should 查询子句中查询
【发布时间】:2019-08-30 19:49:21
【问题描述】:

我有一个场景,在弹性搜索查询的 should 子句中,我需要一个 must 子句。

例如,我需要以这样一种方式过滤数据,即如果数据应该仅用于调度区域 ID 为 10 且承运人 ID 仅为 1、2、3 的订单,但还应该为所有具有驱动程序 ID 的订单提取数据为 1,2,3。

在我当前的场景中,它为所有运营商 ID 提取数据为 1、2、3 和调度区域 ID 10 以及不是 10 的调度区域。即,如果运营商 ID 1 的调度区域 ID 为 9,则该数据也是未来。

如何在 should 查询中添加 must 子句。

{
      "from": 0,
      "size": 10000,
      "query": {
        "bool": {
          "must": [
            {
              "bool": {
                "should": [
                  [
                    {
                      "terms": {
                        "dispatchAreaId": [
                          10
                        ]
                      }
                    },
                    {
                      "terms": {
                        "carrierId": [
                          1,2,3
                        ]
                      }
                    },
                    {
                      "terms": {
                        "driverIds": [
                          1,2,3
                        ]
                      }
                    }
                  ]
                ]
              }
            }
          ]
        }
      }
    }

【问题讨论】:

    标签: amazon-web-services elasticsearch aws-elasticsearch


    【解决方案1】:

    试试下面的查询

    {
      "from": 0,
      "size": 10000,
      "query": {
        "bool": {
          "should": [
            {
              "terms": {
                "dispatchAreaId": [
                  10
                ]
              }
            },
            {
              "bool": {
                "must": [
                  {
                    "terms": {
                      "dispatchAreaId": [
                        10
                      ]
                    }
                  },
                  {
                    "terms": {
                      "carrierId": [
                        1,
                        2,
                        3
                      ]
                    }
                  }
                ]
              }
            }
          ],
          "minimum_should_match": 1
        }
      }
    }
    

    希望这会有所帮助!

    【讨论】:

    • 谢谢,Richa,会接受你的回答,我也在尝试在 should 中使用 must 子句,但可能是我在 api 网关映射模板中遗漏了一些东西。现在工作
    • 乐于助人。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-02-19
    • 2013-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-08-16
    相关资源
    最近更新 更多