本地英文版地址: ../en/keyword.html
一种索引结构化内容的字段,如 ID、电子邮件地址、主机名、状态码、邮政编码或标签。
它们通常用于过滤(比如,查找 status
(状态) 为published
的所有博客帖子)、排序和聚合。
keyword 字段只能通过它们的确切值进行搜索。
如果你需要索引全文内容,如电子邮件正文或产品描述,你可能更愿意使用text
字段。
下面是一个是 keyword 字段的映射示例:
PUT my_index { "mappings": { "properties": { "tags": { "type": "keyword" } } } }
映射数值型标识
并非所有数值数据都应映射为数值型字段数据类型。
Elasticsearch 为范围(range)
查询优化数值型字段,如integer
或long
。
但是,keyword
字段更适合于term
和其他词级查询。
标识(identifier),如 ISBN 或产品ID,很少在范围(range)
查询中使用。
但是,通常使用词级查询来检索它们。
在以下情况下,考虑将数值型标识映射为keyword
:
-
你不打算使用
range
查询来搜索标识数据。 -
快速检索很重要。
keyword
字段上的term
查询搜索通常比数值型字段上的term
搜索更快。
如果你不确定应该使用哪一种,可以使用多字段(multi-field)将数据映射为keyword
和数值型数据类型。
keyword
字段接受以下参数:
映射字段级查询时提升。接受浮点数,默认值为 |
|
是否应该以列跨度(column-stride)的方式将字段存储在磁盘上,以便以后用于排序、聚合或编写脚本? 接受 |
|
refresh 时应该急切地加载全局序号吗?
接受 |
|
多字段(multi-fields)允许出于不同目的以多种方式索引相同的字符串值,例如一个字段用于搜索,一个多字段用于排序和聚合。 |
|
不要索引任何长度超过此值的字符串。
默认值为 |
|
该字段应该是可搜索的吗?接受 |
|
出于评分目的,什么信息应该存储在索引中。
默认为 |
|
在需要计算分数的查询时是否应考虑字段长度。
接受 |
|
接受替换任何显式 |
|
字段值是否应该与 |
|
应该使用哪种评分或相似度算法。
默认为 |
|
如何在编制索引前预处理 keyword?
默认为 |
|
|
为该字段构建查询时,全文查询是否应该使用"空白"拆分输入。
接受 |
字段的元数据。 |
从 2.x 版本导入的索引不支持keyword
类型的字段。
相反,他们会尝试将keyword
降级为string
。
这允许你将现代映射与已过时但仍然被广泛使用的映射合并。
在升级到6.x版本之前,必须重新创建将被长期使用的索引,但是映射降级让你有机会按照自己的计划重新创建索引。