ES支持的数据类型

es支持多种数据类型,以满足不同的数据存储和检索需求。以下是Elasticsearch支持的主要数据类型:

1)核心数据类型

文本类型(Text)

用途:用于全文搜索的文本字段,如电子邮件正文或产品描述。

特点:ES会对文本内容进行分词处理,将字符串转换为单个术语的列表,支持全文搜索和模糊查询。但通常不用于排序或聚合。

关键字类型(Keyword)

用途:适用于精确匹配的字段,如名称、标签、ID、电子邮件地址等。

特点:不会对字段内容进行分词处理,直接构建倒排索引,适合精确查询、过滤、排序和聚合操作。

数值类型

  • 整数类型:包括byte(带符号的8位整数)、short(带符号的16位整数)、integer(带符号的32位整数)、long(带符号的64位整数)。
  • 浮点类型:包括float(32位单精度IEEE 754浮点数)、double(64位双精度IEEE 754浮点数)、half_float(16位半精度IEEE 754浮点数)、scaled_float(缩放类型的浮点数,可以通过scaling_factor参数控制精度)。
  • 特点:数值类型适用于存储数值数据,根据具体需求选择合适的类型可以优化存储和查询效率。

日期类型(Date)

用途:用于存储日期和时间信息

支持的格式:包括格式化的日期字符串(如yyyy-MM-dd)、毫秒级的长整型(表示从1970年1月1日0点到现在的毫秒数)、秒级别的整型(表示从1970年1月1日0点到现在的秒数)等。

特点:便于时间序列数据的检索和分析。

布尔类型(Boolean)

用途:用于表示逻辑判断的字段,如商品是否上架、数据是否失效等。

特点:仅支持truefalse两个值。

二进制类型(Binary)

用途:用于存储二进制数据,如图像、文件和视频等。

特点:以Base64编码格式存储,默认不存储且不可搜索。

2)复合数据类型

对象类型(Object)

用途:用于存储复杂的数据结构,如嵌套的对象。

特点:可以包含多个字段,每个字段可以是不同的数据类型。

数组类型(Array)

用途:用于存储值列表。

特点:在Elasticsearch中,数组不需要专门的字段数据类型,任何字段都可以默认包含零个或多个值,但数组中的所有值必须属于相同的字段类型。

嵌套类型(Nested)

用途:用于存储数组中的对象,允许对数组中的每个对象进行独立的查询。

特点:与对象类型不同,嵌套类型会为数组中的每个对象创建独立的索引。

3)地理数据类型

地理坐标类型(Geo-point)

用途:用于存储地理坐标点,如经纬度。

特点:支持地理空间查询和分析,如计算距离、判断位置关系等。

地理形状类型(Geo-shape)

用途:用于存储复杂的地理形状,如多边形、圆形等。

特点:同样支持地理空间查询和分析。

4)专门数据类型

IP类型(IP)

用途:用于存储IPv4或IPv6地址。

特点:支持对IP地址进行过滤、排序和聚合等操作。

完成类型(Completion)

用途:用于提供自动补全建议。

特点:通常用于搜索框等需要自动补全功能的场景。

令牌计数类型(Token Count)

用途:用于统计文本字段中的令牌数量。

特点:可以用于分析文本内容的丰富程度。

其他专门类型

包括mapper-murmur3(用于计算值的哈希值并存储在索引中)、mapper-annotated-text(用于索引包含特殊标记的文本)、percolator(用于接受来自查询DSL的查询)、join(用于在同一索引的文档中创建父/子关系)、rank_feature(用于记录数字特征以提高查询时的命中率)、dense_vector和sparse_vector(用于记录浮点值的密集向量和稀疏向量)、search-as-you-type(一种优化后的文本字段类型,适用于即时搜索场景)、alias(用于为现有字段定义别名)、flattened(允许将整个JSON对象映射为单个字段,有助于防止映射爆炸)等。

5)范围类型

用途:用于表示数值、日期或IP地址的范围。

支持的类型:包括integer_range、float_range、long_range、double_range、date_range、ip_range等。

特点:可以使用gte、gt、lt、lte等运算符来定义范围,支持范围查询。

6)多字段类型

用途:为了满足不同的查询需求,有时需要对同一个字段以不同的方式进行索引。

实现方式:通过fields参数为字段定义多个子字段,每个子字段可以是不同的数据类型或分析器。

总结来看,Elasticsearch支持的数据类型非常丰富,几乎涵盖了所有常见的数据类型。这些数据类型为Elasticsearch提供了强大的数据建模能力,使其能够高效地处理和分析各种类型的数据。

 

posted @ 2025-04-11 13:42  it-小林  阅读(379)  评论(0)    收藏  举报