Elasticsearch 通配符匹配多个字段

Elasticsearch wildcard matching on multiple fields

我有一些字符串 s,我想与两个字段中的至少一个匹配,作为子字符串 (s)。因此,例如,如果我有字符串 456,我想搜索在两个指定字段中的至少一个字段中存在字符串 456 的任何条目。因此,如果 field1 有 1234567,它将匹配,或者如果 field2 有 34567 ,它会匹配。以下是我迄今为止尝试过的一种方法,但没有成功。

query: {
  bool: {
    should: { wildcard: { field1: "*" + input + "*"}},
    should: { wildcard: { field1: "*" + input + "*"}}
  }
}

我也试过了

query: {
  query_string: "*" + input + "*",
  fields: ["field1", "field2"]
}

我想你需要的是:

{
  "query": {
    "bool": {
      "should": [
        {
          "wildcard": {
            "field1": "*"+"input"+"*"
          }
        },
        {
          "wildcard": {
            "field2": "*"+"input"+"*"
          }
        }
      ]
    }
  }
}