Elasticsearch 7.7 损坏的查询

eqx*_*Dev 7 php elasticsearch laravel

这是在 7.6.2 上工作的,但是自从升级到 7.7 后它就停止工作了,不知道为什么?

我正在使用嵌套或嵌套必须进行查询,因此它必须在三列上为 5 5 5 或 6 6 6。

我正在使用 laravel scout 驱动程序进行弹性搜索 babenkoivan/scout-elasticsearch-driver

谢谢 :)!

  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "should": [
              {
                "bool": {
                  "must": [
                    [
                      {
                        "term": {
                          "section": "205"
                        }
                      },
                      {
                        "term": {
                          "profile": "40"
                        }
                      },
                      {
                        "term": {
                          "rim_size": "17"
                        }
                      }
                    ]
                  ]
                }
              }
            ]
          }
        },
        {
          "bool": {
            "should": [
              [
                {
                  "term": {
                    "supplier_id": 3
                  }
                }
              ]
            ]
          }
        }
      ]
    }
  },
Run Code Online (Sandbox Code Playgroud)

错误:

{
   "error":{
      "root_cause":[
         {
            "type":"x_content_parse_exception",
            "reason":"[1:106] [bool] failed to parse field [must]"
         }
      ],
      "type":"x_content_parse_exception",
      "reason":"[1:106] [bool] failed to parse field [must]",
      "caused_by":{
         "type":"x_content_parse_exception",
         "reason":"[1:106] [bool] failed to parse field [should]",
         "caused_by":{
            "type":"x_content_parse_exception",
            "reason":"[1:106] [bool] failed to parse field [must]",
            "caused_by":{
               "type":"illegal_state_exception",
               "reason":"expected value but got [START_ARRAY]"
            }
         }
      }
   },
   "status":400
}
Run Code Online (Sandbox Code Playgroud)

Val*_*Val 7

您的 中有两个嵌套数组bool/must,您需要删除一个:

              "must": [
      >>>       [
                  {
                    "term": {
                      "section": "205"
                    }
                  },
                  {
                    "term": {
                      "profile": "40"
                    }
                  },
                  {
                    "term": {
                      "rim_size": "17"
                    }
                  }
      >>>       ]
              ]
Run Code Online (Sandbox Code Playgroud)

它应该看起来像这样:

              "must": [
                  {
                    "term": {
                      "section": "205"
                    }
                  },
                  {
                    "term": {
                      "profile": "40"
                    }
                  },
                  {
                    "term": {
                      "rim_size": "17"
                    }
                  }
              ]
Run Code Online (Sandbox Code Playgroud)