前缀查询编辑

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

请求示例编辑

以下搜索返回 user.id 字段包含以 ki 开头的词条的文档。

response = client.search(
  body: {
    query: {
      prefix: {
        'user.id' => {
          value: 'ki'
        }
      }
    }
  }
)
puts response
GET /_search
{
  "query": {
    "prefix": {
      "user.id": {
        "value": "ki"
      }
    }
  }
}

prefix 的顶级参数编辑

<field>
(必填,对象)要搜索的字段。

<field> 的参数编辑

value
(必填,字符串)要在提供的 <field> 中查找的词条的开头字符。
rewrite
(可选,字符串)用于重写查询的方法。有关有效值和更多信息,请参阅 rewrite 参数
case_insensitive [7.10.0] 添加于 7.10.0。
(可选,布尔值)设置为 true 时,允许值与索引字段值进行 ASCII 大小写不敏感匹配。默认值为 false,这意味着匹配的区分大小写取决于底层字段的映射。

注意编辑

简短请求示例编辑

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

response = client.search(
  body: {
    query: {
      prefix: {
        user: 'ki'
      }
    }
  }
)
puts response
GET /_search
{
  "query": {
    "prefix" : { "user" : "ki" }
  }
}

加速前缀查询编辑

您可以使用 index_prefixes 映射参数来加速前缀查询。如果启用,Elasticsearch 会根据配置设置将前缀索引在一个单独的字段中。这使得 Elasticsearch 可以更高效地运行前缀查询,但代价是索引更大。

允许高开销查询编辑

如果 search.allow_expensive_queries 设置为 false,则不会执行前缀查询。但是,如果启用了 index_prefixes,则会构建一个不被认为是慢速的优化查询,并且会忽略此设置而执行。