Elasticsearch在多个字段上的通配符匹配

时间:2017-09-25 23:58:03

标签: elasticsearch wildcard

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

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

我也试过

{{1}}

1 个答案:

答案 0 :(得分:2)

我认为你需要的是:

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