Sta*_*nko 15

从版本 7.10 开始,wildcard查询支持特殊参数case_insensitive(布尔值)。不区分大小写的搜索示例:

GET /_search
{
  "query": {
    "wildcard": {
      "my_field": {
        "value": "ki*y",
        "case_insensitive": true
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)


Tec*_*Sid 6

通配符没有被分析。这取决于您为要搜索的领域提供了哪些分析器。但是,如果您使用的是默认分析器,那么通配符查询将返回不区分大小写的结果。

示例:在示例索引中发布两个名称,一个是“Sid”,另一个是“sid”。

POST sample/sample
{
  "name" : "sid"
}

POST sample/sample
{
  "name" : "Sid"
}
Run Code Online (Sandbox Code Playgroud)

然后执行通配符查询:

GET sample/_search
{
  "query": {
    "wildcard": {
      "name": {
        "value": "s*"
      }
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

这将返回两个文件:

{
  "took": 10,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 2,
    "max_score": 1,
    "hits": [
      {
        "_index": "sample",
        "_type": "sample",
        "_id": "AWRPM87Wb6oopELrnEKE",
        "_score": 1,
        "_source": {
          "name": "Sid"
        }
      },
      {
        "_index": "sample",
        "_type": "sample",
        "_id": "AWRPM9tpb6oopELrnEKF",
        "_score": 1,
        "_source": {
          "name": "sid"
        }
      }
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

但是,如果您对“S*”执行通配符查询,它将不会返回任何内容。因为默认标记过滤器以小写形式存储术语,而术语“Sid”在倒排索引中存储为“sid”。