• 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

  • 相关阅读:
    Base64
    HBase搭建
    解决Zookeeper无法启动的问题
    docker基础知识之挂载本地目录
    VMware升级到15版本虚拟机黑屏的解决方法
    docker端口映射或启动容器时报错Error response from daemon: driver failed programming external connectivity on endpoint
    MQTT 入门介绍
    OpeTSDB的Configuration配置
    js中ES6的Set的基本用法
    Review-JVM
  • 原文地址:https://www.cnblogs.com/GreenLeaves/p/16529552.html
Copyright © 2020-2023  润新知