0

我正在elasticsearch中寻找与此等效的东西-

Select * from users where firstname in ("%abc%" , "%xyz%" ) and city = "Texas"

它有多个匹配条件和一个固定条件为 CITY。

 "query": {
        "bool": {
          "must": [
            {
              "wildcard": {
                "firstname": "*ABC*"
              }
            },
            {
              "wildcard": {
                "firstname": "*XYZ*"
              }
            },
            {
              "wildcard": {
                "city": "Texas"
              }
            }
          ]
        }
      }

我正在尝试像上面那样,但它不起作用。我只能使用一个通配符参数使其工作。但是,一旦我尝试为同一字段保留多个结果,我得到的结果为零。

4

1 回答 1

1

must是一个AND条件。

{
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "should": [
              {
                "wildcard": {
                  "firstname": "*ABC*"
                }
              },
              {
                "wildcard": {
                  "firstname": "*XYZ*"
                }
              }
            ]
          }
        },
        {
          "wildcard": {
            "city": "Texas"
          }
        }
      ]
    }
  }
}

所以SQL in从句翻译为ORieshould

于 2020-07-08T16:53:20.780 回答