Elasticsearch 多字段通配符 bool 查询

Ted*_*Ted 1 elasticsearch

当前使用布尔查询来搜索两个输入单词的组合或“名称”字段中输入单词之一的组合。如何使用通配符搜索多个字段?

POST inventory_dev/_search
{"from":0,"query":{"bool":{"must":[{"bool":{"should":[{"term":{"Name":{"value":"dove"}}},{"term":{"Name":{"value":"3.75oz"}}},{"bool":{"must":[{"wildcard":{"Name":{"value":"*dove*"}}},{"wildcard":{"Name":{"value":"*3.75oz*"}}}]}}]}}]}},"size":10,"sort":[{"_score":{"order":"desc"}}]}
Run Code Online (Sandbox Code Playgroud)

ESC*_*der 6

您可以使用query_string代替通配符查询,以搜索多个字段

{
  "from": 0,
  "query": {
    "bool": {
      "must": [
        {
          "bool": {
            "should": [
              {
                "term": {
                  "Name": {
                    "value": "dove"
                  }
                }
              },
              {
                "term": {
                  "Name": {
                    "value": "3.75oz"
                  }
                }
              },
              {
                "bool": {
                  "must": [
                    {
                      "query_string": {
                        "query": "*dove*",
                        "fields": [
                          "field1",
                          "Name"
                        ]
                      }
                    },
                    {
                      "query_string": {
                        "query": "*3.75oz*",
                        "fields": [
                          "field1",
                          "Name"
                        ]
                      }
                    }
                  ]
                }
              }
            ]
          }
        }
      ]
    }
  },
  "size": 10,
  "sort": [
    {
      "_score": {
        "order": "desc"
      }
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)