本地英文版地址: ../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版本之前,必须重新创建将被长期使用的索引,但是映射降级让你有机会按照自己的计划重新创建索引。