7.11
映射字段类型常见类型
binary
二进制值编码为Base64字符串
boolean
布尔类型 true或者false
Keywords
包括了
- keyword,用于结构化内容,例如ID,电子邮件地址,主机名,状态代码,邮政编码或标签。
- constant_keyword,始终包含相同值的关键字字段
- wildcard,可针对类似grep的通配符查询优化日志行和类似的关键字值。
Dates
日期类型,包括了
- date
- date_nanos, 以纳秒级的分辨率存储日期,这限制了它的日期范围从大约1970到2262,因为日期仍存储为自纪元以来的较长的纳秒级表示。
alias
一个别名映射为索引中的一个字段定义的替代名称。
PUT trips
{
"mappings": {
"properties": {
"distance": {
"type": "long"
},
"route_length_miles": {
"type": "alias",
"path": "distance"
},
"transit_mode": {
"type": "keyword"
}
}
}
}
对象和关系类型
object
json对象
flattened
整个对象映射为单字段,目的是为了防止动态映射对象导致的映射爆炸。
nested
nested是对象数据类型的专门版本,它允许以可以彼此独立地查询对象的方式对对象数组进行索引。
如果需要为对象数组建立索引并保持数组中每个对象的独立性,请使用nested而不是object。
join
join数据类型是一个特殊字段,可在相同索引的文档中创建父/子关系。 关系部分在文档中定义了一组可能的关系,每个关系都是父名称和子名称。
PUT my-index-000001
{
"mappings": {
"properties": {
"my_id": {
"type": "keyword"
},
"my_join_field": {
"type": "join",
"relations": {
"question": "answer"
}
}
}
}
}
结构化数据类型
Range
包括了
- long_range,
- double_range
- date_range
- ip_range
ip
包括了ipv4和ipv6,查询可以查网段。
version
软件版本号
murmur3
哈希值
汇总数据类型
aggregate_metric_double
存储度量标准聚合的预聚合数值。 Aggregate_metric_double字段是一个对象,其中包含一个或多个以下度量标准子字段:min,max,sum和value_count。
histogram
用于存储表示直方图的预聚合数值数据的字段。
文字搜索类型
text
非结构化文本。
annotated-text
包含特殊标记的文本。 用于标识命名实体。
completion
自动完成建议
search_as_you_type
search_as_you_type字段类型是一个类似文本的字段,经过优化,可以为提供按需输入完成情况的查询提供开箱即用的支持。
token_count
文本中的令牌数,也可以理解为单词。
文档等级类型
dense_vector
记录浮点值的密集向量。
sparse_vector
记录浮点值的稀疏向量。
rank_feature
记录数字功能以提高查询时的点击率。
rank_features
记录数字功能以提高查询时的点击率。
仅支持单值功能和严格为正的值。多值字段和零或负值将被拒绝。
空间数据类型
geo_point
经纬度地理位置
PUT my-index-000001
{
"mappings": {
"properties": {
"location": {
"type": "geo_point"
}
}
}
}
PUT my-index-000001/_doc/1
{
"text": "Geo-point as an object",
"location": {
"lat": 41.12,
"lon": -71.34
}
}
geo_shape
复杂的形状,例如多边形。
point
任意笛卡尔点。
PUT my-index-000001
{
"mappings": {
"properties": {
"location": {
"type": "point"
}
}
}
}
PUT my-index-000001/_doc/1
{
"text": "Point as an object",
"location": {
"x": 41.12,
"y": -71.34
}
}
shape
任意笛卡尔几何。
其他类型
percolator
索引以查询DSL编写的查询。
数组
在Elasticsearch中,数组不需要专用的字段数据类型。 默认情况下,任何字段都可以包含零个或多个值,但是,数组中的所有值都必须具有相同的字段类型。
多字段
为不同的目的以不同的方式对同一字段建立索引。 例如,可以将字符串字段映射为用于全文本搜索的文本字段,并映射为用于排序或聚合的关键字字段:
PUT my-index-000001
{
"mappings": {
"properties": {
"city": {
"type": "text",
"fields": {
"raw": {
"type": "keyword"
}
}
}
}
}
}
参考资料
- https://www.elastic.co/guide/en/elasticsearch/reference/current/mapping-types.html