Elasticsearch 多个字段的通配符匹配

AGD*_*GDW 4 wildcard elasticsearch

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

query: {
  bool: {
    should: { wildcard: { field1: "*" + input + "*"}},
    should: { wildcard: { field1: "*" + input + "*"}}
  }
}
Run Code Online (Sandbox Code Playgroud)

我也尝试过

query: {
  query_string: "*" + input + "*",
  fields: ["field1", "field2"]
}
Run Code Online (Sandbox Code Playgroud)

小智 6

我认为你需要的是:

{
  "query": {
    "bool": {
      "should": [
        {
          "wildcard": {
            "field1": "*"+"input"+"*"
          }
        },
        {
          "wildcard": {
            "field2": "*"+"input"+"*"
          }
        }
      ]
    }
  }
}
Run Code Online (Sandbox Code Playgroud)