前缀查询
编辑前缀查询编辑
返回在提供的字段中包含特定前缀的文档。
请求示例编辑
以下搜索返回 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
,则会构建一个不被认为是慢速的优化查询,并且会忽略此设置而执行。