原英文版地址: https://www.elastic.co/guide/en/elasticsearch/reference/7.7/query-dsl-prefix-query.html, 原文档版权归 www.elastic.co 所有
本地英文版地址: ../en/query-dsl-prefix-query.html

前缀查询 (prefix query)

返回在指定的字段中包含特定前缀的文档。

请求示例

下面这个搜索返回 user 字段包含以 ki 开头的词项的文档。

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

prefix的顶级参数

<field>
(必需, object) 你想要搜索的字段。

<field>的参数

value
(必需, string) 你希望在指定的 <field> 中查找的词项的起始字符。
rewrite
(可选, string) 用于重写查询的方法。有效值及更多信息请参考 rewrite 参数

注意

短请求格式的示例

可以通过组合 <field>value 参数来简化 prefix 查询语法。例如:

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

提高前缀查询的速度

可以使用 index_prefixes 映射参数来提高前缀查询的速度。 如果启用了该参数,Elasticsearch 会在单独的字段中索引 2 到 5 个字符的前缀。 这让 Elasticsearch 以更大的索引为代价去更有效地运行前缀查询。

允许执行昂贵的查询

如果 search.allow_expensive_queries 设置为false,则前缀查询不会被执行。 即使有此设置,但是如果启用了 index_prefixes,则会构建一个优化的查询,该查询不会被认为很慢,因此会被执行。