ES 常用数据类型

1、ES常用数据类型 

1.1 Numbers 数字类型

涉及到的类型很多,具体查阅文档 常用的有long,integer,short,double,float

 

1.2 Keywords 关键字类型 

 关键字分为以下几种:

(1)、keyword 用于索引结构化内容,如ID、电子邮件地址、主机名、状态码、邮政编码或标签。

说明:默认情况下text类型不会创建正排索引,而聚合查询要求查询的相关字段必须建立了正排索引,所以当text类型需要进行聚合查询时需要指定keyword类型,其常用于排序、过滤、聚合.   当然可以用fielddata临时给text创建正排索引,但是这种方式创建的正排索引位于jvm的堆内存中,不是已磁盘文件的形式落地.而且text类型默认会被分词,聚合会按照分词结果进行聚合.所以要慎用.

这里还要注意一点是,一般情况下不需要对text类型创建正排索引,因为内容过长,也不利于索引.

注:数据Id应该使用keyword而不是int或者string等类型,因为keyword会创建正排索引

(2)、constant_keyword 对于始终包含相同值的关键字字段。

(3)、wildcard 用于非结构化机器生成的内容。通配符类型针对具有大值或高基数的字段进行了优化。

 

1.3 Dates 日期类型 

日期类型分为以下几种:

(1)、date 日期类型

自动识别机制如下几种

i、Json字符串格式为“2015-01-01”或“2015/01/01 12:10:30”,会被识别为date类型

ii、时间戳

其余注意事项请参考官网

 

(2)、date_nanos 纳秒类型

如果毫秒的精度不够,可以使用纳秒类型.

 

1.4  alias 索引别名类型 

 

1.5 binary 二进制类型

二进制类型接受二进制值作为Base64编码字符串。默认情况下,该字段不存储且不可搜索:

 

2、ES结构化数据类型

2.1、Range 范围类型

范围字段类型表示上限和下限之间的连续值范围。例如,一个范围可以表示10月份的任何日期,也可以表示0到9之间的任何整数。它们使用运算符gt或gte定义下限,使用运算符lt或lte定义上限。它们可以用于查询,并且对聚合的支持有限。唯一支持的聚合是直方图和基数。

其余几种范围类型,请参考官方文档

 

3、ES文本搜索类型

3.1、text fields 文本类型 常用于文本搜索,但是不能创建正排索引

索引全文值的字段,例如电子邮件正文或产品描述。对这些字段进行分析,即在索引之前,通过分析器将字符串转换为单个术语的列表。分析过程允许Elasticsearch在每个全文字段中搜索单个单词。文本字段不用于排序,很少用于聚合(尽管重要的文本聚合是一个显著的例外)。文本字段最适合非结构化但可读的内容。如果需要索引非结构化机器生成的内容,请参阅映射非结构化内容。

如果您需要索引结构化内容,如电子邮件地址、主机名、状态代码或标记,则可能更应该使用关键字字段。

文本类型分为两种:

(1)、text

全文内容(如电子邮件正文或产品描述)的传统字段类型。

说明:当字段被设置成文本类型后,字段会被分析(经过过滤器和分词器操作),会被分词,在生成倒排索引前,字段会被分词,分成一个个词项,一般无法用作排序和聚合操作.(text无法创建正排索引(用于排序和聚合),因为创建正排索引,会消耗大量的堆空间,尤其是加载高基数字段(经过去重之后,仍然有大量的重复的数据)时),字段一旦被加载到堆中,会在生命周期内保持在那里,同样加载数据也是非常的消耗资源,会产生延迟.  es默认不会给test创建正排索引

(2)、match_only_text

一种空间优化的文本变体,禁用评分,在需要位置的查询上执行速度较慢。它最适合索引日志消息。

其余关于文本类型的介绍,参考官方文档.

其余关于搜索的类型参看官方说明.

 

4、ES对象关系类型 Objects and relational types

4.1 object 对象类型

一般用于嵌套类型,如User和UserType的嵌套关系,前提是两者都是独立的结构.JSON文档本质上是分层的:文档可能包含内部对象,而内部对象本身也可能包含内部对象

4.2 nested 对象数组类型

一般用于报存对象数组类型,嵌套类型是对象数据类型的专门版本,允许以相互独立的方式对对象数组进行索引。

4.3 flattened 

默认情况下,对象中的每个子字段分别映射和索引。如果子字段的名称或类型事先未知,则会动态映射它们。flattened 将整个对象映射为单个字段。给定一个对象,展平映射将解析出其叶值,并将其索引到一个字段中作为关键字。然后可以通过简单的查询和聚合来搜索对象的内容。但是也有限制,如只允许基本查询,不支持数值范围查询或高亮显示,具体参阅文档.

4.4 join 关联关系类型

连接数据类型是一个特殊字段,用于在相同索引的文档中创建父/子关系。关系部分定义了文档中一组可能的关系,每个关系都是父名称和子名称。

具体查看官方文档

 

5、ES特殊数据类型

5.1 geo_pointgeo_shapepointshape   4大类型 常用于地理位置搜索具体查看官方文档.

 

5.2 completion 配合Completion Suggester使用

自动完成建议类型,类似于百度搜索框输入一段文字后,会出现一个建议的下拉框内容,该类型就是实现这个功能用的.

完成提示器提供键入时自动完成/搜索功能。这是一种导航功能,用于在用户键入时引导用户找到相关结果,从而提高搜索精度。它不是为了拼写纠正,或者你指的是像术语或短语提示器这样的功能。理想情况下,自动完成功能应该与用户键入的速度一样快,以提供与用户已键入内容相关的即时反馈。因此,完成建议器针对速度进行了优化。该建议器使用能够快速查找的数据结构,但构建成本高,并且存储在内存中。

 

其余类型官方文档查阅 https://www.elastic.co/guide/en/elasticsearch/reference/8.3/mapping-types.html

 

posted @   郑小超  阅读(14800)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 一文读懂知识蒸馏
· 终于写完轮子一部分:tcp代理 了,记录一下
点击右上角即可分享
微信分享提示