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.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_point
、geo_shape
、point
、shape
4大类型 常用于地理位置搜索具体查看官方文档.
5.2 completion
配合Completion Suggester使用
自动完成建议类型,类似于百度搜索框输入一段文字后,会出现一个建议的下拉框内容,该类型就是实现这个功能用的.
完成提示器提供键入时自动完成/搜索功能。这是一种导航功能,用于在用户键入时引导用户找到相关结果,从而提高搜索精度。它不是为了拼写纠正,或者你指的是像术语或短语提示器这样的功能。理想情况下,自动完成功能应该与用户键入的速度一样快,以提供与用户已键入内容相关的即时反馈。因此,完成建议器针对速度进行了优化。该建议器使用能够快速查找的数据结构,但构建成本高,并且存储在内存中。
其余类型官方文档查阅 https://www.elastic.co/guide/en/elasticsearch/reference/8.3/mapping-types.html