ES Multiple必须查询

erc*_*cvs 2 elasticsearch

我想使用多必须查询,但出现以下错误。重复的键“必须”语法错误。结果应该是幻想和可乐。我如何获得这些数据?

必须类似于以下结果:1:可口可乐2:芬达

  {
    "query": {
      "bool": {
        "must": [
             {
                "match": {
                  "productName":"Coca Cola"
                }
              },
              {
                "match": {
                  "productCode": "Coke"
                }
              },
              {
                "match": {
                  "created_date": "2018-06-10"
                }
              }
        ],
        "must": [
             {
                "match": {
                  "productName":"Fanta"
                }
              },
              {
                "match": {
                  "productCode": "Coke"
                }
              },
              {
                "match": {
                  "created_date": "2018-06-05"
                }
              }
        ]
      }
    }
  }
Run Code Online (Sandbox Code Playgroud)

在mysql中:

选择*从产品所在的位置(名称=“可口可乐”和代码=“可乐” ...)或(名称=“芬达” ...)

Val*_*Val 5

您需要将两个must(即AND)包装在一个should(即OR)中,如下所示:

{
  "query": {
    "bool": {
      "should": [
        {
          "bool": {
            "must": [
              {
                "match": {
                  "productName": "Coca Cola"
                }
              },
              {
                "match": {
                  "productCode": "Coke"
                }
              },
              {
                "match": {
                  "created_date": "2018-06-10"
                }
              }
            ]
          }
        },
        {
          "bool": {
            "must": [
              {
                "match": {
                  "productName": "Fanta"
                }
              },
              {
                "match": {
                  "productCode": "Coke"
                }
              },
              {
                "match": {
                  "created_date": "2018-06-05"
                }
              }
            ]
          }
        }
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)