Term-level queries.Wildcard query

128 阅读1分钟

Wildcard query

source:www.elastic.co/guide/en/el…

path:Elasticsearch - Query DSL - Term-level queries - Wildcard query

返回包含与通配符模式匹配的term的document。一个通配符运算符就是匹配一个或多个字符的占位符。例如,*这个通配符运算符匹配0个或多个字符。你可以将通配符运算符和其他字符结合起来创造一个通配符pattern。

Example request

下面会搜索user.idfield包含 以ki开头 y结尾的term的document。匹配的term可以是kiy, kity, or kimchy

GET /_search
{
  "query": {
    "wildcard": {
      "user.id": {
        "value": "ki*y",
        "boost": 1.0,
        "rewrite": "constant_score_blended"
      }
    }
  }
}

Top-level parameters for wildcard

field

(Required,object)想要搜索的field。

Parameters for field

boost

(Optional,float)pass

case_insensitive`[7.10.0]

(Optional,Boolean)当设置为true时,允许pattern和field 值进行大小写不敏感的匹配。默认为false,这意味着是否大小写敏感依赖依赖底层field的mapping。

rewrite

(Optional,string)用来重写query的方法,更多请查看 rewrite parameter

value

(Required,string)你想要在指定field上搜索的通配符pattern。参数支持两种通配符操作符:

  • ? 会匹配任何单个字符
  • * 会匹配0个或多个字符,包括空字符

Warning

尽量避免pattern以 *?开头,这会增加查找匹配term的循环,导致较慢的搜索表现。

wildcard

(Required,string)value参数的别名。如果你同时指定了valuewildcard。query会使用 request body中最后定义的那个。

Notes

Allow expensive queries

如果 search.allow_expensive_queries被设为false,Wildcard query不会被执行。