Term-level queries.Prefix query

104 阅读1分钟

Prefix query

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

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

在指定的field上搜索包含指定前缀的document。

Example request

下面的query会搜索user.id field上以ki开头的document。

GET /_search
{
  "query": {
    "prefix": {
      "user.id": {
        "value": "ki"
      }
    }
  }
}

Top-level parameter for prefix

field

(Required,object)要搜索的field

Parameters for field

value

(Required,string)你想在指定field中搜索词的前缀

rewrite

(Optional,string)用来重写query的method,可选值和更多信息 请查阅 rewrite parameter

case_insensitive[7.10.0]

(Optional,Boolean)当设为true时,会在field上搜索是大小写敏感。默认是false。这意味着搜索是否大小写敏感取决于底层field的mapping。

Note

Short request example

你可以通过将fieldvalue进行合并来简化prefix query。例如

GET /_search
{
  "query": {
    "prefix" : { "user" : "ki" }
  }
}

Speed up prefix queries

可以使用index_prefixes mapping参数来加速prefix 查询。如果启用,Elasticsearch会在单独的field对prefix进行索引处理。这可以让prefix query更高效只不过索引所占空间会变大。

Allow expensive queries

如果search.allow_expensive_queries设置为false,prefix query不会被执行。然而,如果启用了index_prefixes,依然会进行查询。