keyword族包含以下字段类型:
- keyword,用于结构化内容,例如IDs、电子邮件地址、主机名、状态代码、邮政编码或者标签。
constant_keyword
,对于始终包含相同值的keyword字段。wildcard
,用于非结构化机器生成的内容。wildcard类型对具有大值或高基数的字段进行了优化。
Keyword字段常用于sorting,aggregations和term-level queries,例如term
。
Keyword 字段类型
下面是基本keyword字段的映射示例:
PUT my-index-000001
{
"mappings": {
"properties": {
"tags": {
"type": "keyword"
}
}
}
}
基本keyword字段的参数
keyword字段接受以下参数:
boost
:映射字段级查询时提升(提升权重)。接受浮点数,默认为1.0。
注意:boost仅适用于term queries(前缀、范围和模糊查询不提升)
插入时设置:
PUT my-index-000001
{
"mappings": {
"properties": {
"title": {
"type": "text",
"boost": 2
},
"content": {
"type": "text"
}
}
}
}
查询时可以不用:
POST _search
{
"query": {
"match": {
"title": {
"query": "quick brown fox"
}
}
}
}
相同于:
POST _search
{
"query": {
"match": {
"title": {
"query": "quick brown fox",
"boost": 2
}
}
}
}
doc_values
:该字段是否应该以列跨度的方式存储在磁盘上,以便以后可以用于排序、聚合或编写脚本?接受true(默认)或false。eager_global_ordinals
:是否应该在刷新时急切地加载全局序号?接受true或false(默认)。在经常使用terms聚合的字段上启用此功能是个好主意。
有点像mysql的自增主键
<...剩余部分暂不翻译...>
常量 keyword字段类型
常量keyword是keyword字段的一个特殊,在索引中所有文档具有相同的值。
PUT logs-debug
{
"mappings": {
"properties": {
"@timestamp": {
"type": "date"
},
"message": {
"type": "text"
},
"level": {
"type": "constant_keyword",
"value": "debug"
}
}
}
}
constant_keyword支持与keyword字段相同的查询和聚合,但利用所有文档具有相同的每个索引值这一事实,可以更有效地执行查询。
允许提交没有字段值或值等于映射中配置的值的文档。以下两个索引请求是等效的:
POST logs-debug/_doc
{
"date": "2019-12-12",
"message": "Starting up Elasticsearch",
"level": "debug"
}
POST logs-debug/_doc
{
"date": "2019-12-12",
"message": "Starting up Elasticsearch"
}
<...剩余部分暂不翻译...>
Wildcard字段类型
wildcard字段类型是一个专门的keyword字段,用于机器生成的非结构化内容,你计划使用grep-like wildcard
(通配符)和regexp
查询。wildcard类型是被优化针对于大值或者高基数字段。
开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 3 天,点击查看活动详情