热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

elasticsearch7.XMapping常见字段类型整理

参考:https:www.phpmianshi.com?id254一、核心数据类型字符串:text, keyword数值型:long, integer, short, byte, 

参考:https://www.phpmianshi.com/?id=254


一、核心数据类型


  • 字符串:textkeyword

  • 数值型:longintegershortbytedoublefloathalf_floatscaled_float

  • 布尔型:boolean

  • 日期型:datedate_nanos

  • 二进制:binary

  • 范围型:integer_rangefloat_rangelong_rangedouble_rangedate_range

1. 字符串

text

text 类型的字段数据会被分词,在生成倒排索引以前,字符串会被分词器分成一个一个词项。
text 类型的字段不用于排序,很少用于聚合(termsAggregation除外)。
如果一个字段需要被全文搜索或模糊匹配,比如文章内容、产品描述、新闻内容等,应该使用text类型。

keyword

keyword 类型的字段内容不会被分词。
keyword 类型的字段只能通过精确值搜索到,用于过滤、排序、聚合。
适用于索引结构化的字段,比如IP地址、性别和地区等。

2. 数值型

整数

 


类型最小值最大值说明

byte

-128

127

8 位有符号整数(1个字节),相当于MySQL中有符号的 tinyint

short

-32768

32767

16 位有符号整数(2个字节),相当于MySQL中有符号的 smallint

integer

-2147483648
(-2^31^)

2147483647
(2^31^-1)

32 位有符号整数(4个字节),相当于MySQL中有符号的 int

long

-9223372036854775808)
(-2^63^)

9223372036854775807
(2^63^-1)

64 位有符号整数(8个字节),相当于MySQL中有符号的 bigint

对于整数类型的字段,在满足需求的情况下,要尽可能选择范围小的数据类型。比如某个字段的取值最大值不会超过100,那么选择byte类型即可。迄今为止,吉尼斯世界记录的人类的年龄的最大值为134岁,对于年龄字段,short足矣。字段的长度越短,索引和搜索的效率越高。

小数

 


类型最小值最大值说明

half_float

2^-24^

65504

16位半精度浮点数

float

2^-149^

(2-2^-23^)·2^127^

32位单精度浮点数

double

2^-1074^

(2-2^-52^)·2^1023^

64位双精度浮点数

scaled_float

  

缩放类型浮点数

处理浮点数时,优先考虑使用scaled float类型。scaled float 是通过缩放因子把浮点数变成long类型,比如价格只需要精确到分,price字段的取值为57.34,设置放大因子为100,存储起来就是5734,所有的API都会把price的取值当作浮点数,事实上Elasticsearch底层存储的是整数类型,因为压缩整数比压缩浮点数更加节省存储空间。

3. 布尔型

如果一个字段是布尔类型,可接受的值为 truefalse
Elasticsearch 5.4版本以前,可以接受可被解释为 true 或 false 的字符串和数字。
5.4版本以后只接受 truefalse"true""false"

4. 日期型

date

JSON 没有日期型数据类型,所以在Elasticsearch中,日期可以是:


  • 包含格式化日期的字符串,例如"2015-01-01"或者"2015/01/01 12:10:30"

  • 代表时间毫秒数的长整型数字。

  • 代表时间秒数的整数。

Elasticsearch内部会把日期转换为 UTC (世界标准时间),并将其存储为代表时间毫秒数的长整数。
日期格式可以自定义,如果没有指定格式,则使用默认值:


 

"strict_date_optional_time||epoch_millis"

这种情况下可以解析下面三种日期格式:


 

"2020-05-01"
"2020-05-01T12:10:30Z"
1591234567890

date_nanos

此数据类型是对日期数据类型的补充。现有的 date 类型可以存储毫秒级时间。而 date_nanos 可以存储纳秒级时间。

5. 二进制

binary

二进制数据类型接受Base64编码字符串的二进制值。字段不以默认方式存储而且不能搜索。
Base64编码二进制值不能嵌入换行符\n

6. 范围型

 


类型说明

integer_range

32 位有符号整数的范围值,-2^31^ ~ 2^31^-1

long_range

62 位有符号整数的范围值,-2^63^ ~ 2^63^-1

float_range

32位单精度浮点数范围值

double_range

64位单精度浮点数范围值

date_range

以64位无符号整数形式表示的日期值范围

ip_range

IPv4 或 IPv6 的范围值


二、复合数据类型

1. 对象类型

object

用于存储单个JSON对象。
JSON本质上具有层级关系,文档包含内部对象,内部对象本身还可以包含内部对象。

2. 嵌套类型

nested

用于存储多个JSON对象组成的数组。
nested 类型是 object 类型中的一个特例,可以让对象数组独立索引和查询。Lucene没有内部对象的概念,所以Elasticsearch将对象层次扁平化,转化成字段名字和值构成的简单列表。


三、地理位置类型

1. 地理坐标类型

geo_point

用于存储经纬度坐标对,可用来
查找一定范围内的地理点,这个范围可以是相对于一个中心点的固定距离,也可以是多边形或者地理散列单元。
通过地理位置或者相对于中心点的距离聚合文档。
整合距离到文档的相关性评分中。

用于存储地理位置信息的经纬度坐标对,可用于以下几种场景:


  • 查找一定范围内的地理位置。

  • 通过地理位置或者相对中心点的距离来聚合文档。

  • 把距离因素整合到文档的评分中。

  • 通过距离对文档排序。

2. 地理形状类型

geo_shape

地理形状数据类型有利于索引和搜索任意地理形状,例如矩形、三角形或者其他多边形。无论是数据被索引还是在查询执行的过程中,都可以使用地理形状数据类型在地理点的基础上包含地理形状。
Elasticsearch 使用 GeoJSON 格式来表示地理形状。
GeoJSON 是一种对各种地理数据结构进行编码的格式,对象可以表示几何、特征或者特征集合,支持点、线、面、多点、多线、多面等几何类型。
GeoJSON 里的特征包含一个几何对象和其他属性,特征集合表示一系列特征。
想了解更多关于 GeoJSON 的资料可参考《GeoJSON格式规范说明》


四、特殊类型

IP

IP地址类型,存储 IPv4 和 IPv6 地址

Completion datatype

completion 提供自动补全建议

Token count

token_count 用于统计字符串分词后的词项个数,本质上是一个整数型字段。
例如:映射中指定 name 为 text 类型,增加 name_length 字段用于统计分词后词项的长度,类型为 token_count,分词器为标准分词器。

mapper-murmur3

murmur3 在索引时计算值的哈希值并将它们存储在索引中

mapper-annotated-text

annotated-text 索引包含特殊标记的文本(通常用于标识命名实体)

Percolator

接受来自 query-dsl 的查询

Join

为同一索引中的文档定义父/子关系

Rank feature

Rank features

排名功能,记录数字特性以提高查询时的命中率

Dense vector

密集向量,记录浮点值的密集向量

Sparse vector

稀疏向量,记录浮点值的稀疏向量

Search-as-you-type

按类型搜索,类似文本的字段,为查询进行优化,以实现按类型完成

Alias

别名,定义现有字段的别名

Flattened

允许将整个JSON对象作为单个字段编入索引。

Shape

shape for arbitrary cartesian geometries.

Histogram

histogram for pre-aggregated numerical values for percentiles aggregations.


五、数组类型

数组类型不需要专门指定数组元素的类型,任何字段类型都可以包含在数组内,但是数组中的所有值必须具有相同的数据类型。


  • 字符型数组: ["one", "two"]

  • 整型数组:[1, 2]

  • 数组型数组:[1, [2, 3]] 等同于 [1, 2, 3]

  • 对象数组:[{"name": "Mary", "age": 12}, {"name": "John", "age": 10}]

参考文献:

官方文档v7.6:字段数据类型

 



推荐阅读
  • 本文介绍了如何使用PHP向系统日历中添加事件的方法,通过使用PHP技术可以实现自动添加事件的功能,从而实现全局通知系统和迅速记录工具的自动化。同时还提到了系统exchange自带的日历具有同步感的特点,以及使用web技术实现自动添加事件的优势。 ... [详细]
  • 本文介绍了在开发Android新闻App时,搭建本地服务器的步骤。通过使用XAMPP软件,可以一键式搭建起开发环境,包括Apache、MySQL、PHP、PERL。在本地服务器上新建数据库和表,并设置相应的属性。最后,给出了创建new表的SQL语句。这个教程适合初学者参考。 ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • 原文地址:https:www.cnblogs.combaoyipSpringBoot_YML.html1.在springboot中,有两种配置文件,一种 ... [详细]
  • javascript  – 概述在Firefox上无法正常工作
    我试图提出一些自定义大纲,以达到一些Web可访问性建议.但我不能用Firefox制作.这就是它在Chrome上的外观:而那个图标实际上是一个锚点.在Firefox上,它只概述了整个 ... [详细]
  • 使用在线工具jsonschema2pojo根据json生成java对象
    本文介绍了使用在线工具jsonschema2pojo根据json生成java对象的方法。通过该工具,用户只需将json字符串复制到输入框中,即可自动将其转换成java对象。该工具还能解析列表式的json数据,并将嵌套在内层的对象也解析出来。本文以请求github的api为例,展示了使用该工具的步骤和效果。 ... [详细]
  • 数据库(外键及其约束理解)(https:www.cnblogs.comchenxiaoheip6909318.html)My ... [详细]
  • 本文介绍了在Mac上搭建php环境后无法使用localhost连接mysql的问题,并通过将localhost替换为127.0.0.1或本机IP解决了该问题。文章解释了localhost和127.0.0.1的区别,指出了使用socket方式连接导致连接失败的原因。此外,还提供了相关链接供读者深入了解。 ... [详细]
  • XML介绍与使用的概述及标签规则
    本文介绍了XML的基本概念和用途,包括XML的可扩展性和标签的自定义特性。同时还详细解释了XML标签的规则,包括标签的尖括号和合法标识符的组成,标签必须成对出现的原则以及特殊标签的使用方法。通过本文的阅读,读者可以对XML的基本知识有一个全面的了解。 ... [详细]
  • 不同优化算法的比较分析及实验验证
    本文介绍了神经网络优化中常用的优化方法,包括学习率调整和梯度估计修正,并通过实验验证了不同优化算法的效果。实验结果表明,Adam算法在综合考虑学习率调整和梯度估计修正方面表现较好。该研究对于优化神经网络的训练过程具有指导意义。 ... [详细]
  • 如何在服务器主机上实现文件共享的方法和工具
    本文介绍了在服务器主机上实现文件共享的方法和工具,包括Linux主机和Windows主机的文件传输方式,Web运维和FTP/SFTP客户端运维两种方式,以及使用WinSCP工具将文件上传至Linux云服务器的操作方法。此外,还介绍了在迁移过程中需要安装迁移Agent并输入目的端服务器所在华为云的AK/SK,以及主机迁移服务会收集的源端服务器信息。 ... [详细]
  • 本文详细介绍了MySQL表分区的创建、增加和删除方法,包括查看分区数据量和全库数据量的方法。欢迎大家阅读并给予点评。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • mysql-cluster集群sql节点高可用keepalived的故障处理过程
    本文描述了mysql-cluster集群sql节点高可用keepalived的故障处理过程,包括故障发生时间、故障描述、故障分析等内容。根据keepalived的日志分析,发现bogus VRRP packet received on eth0 !!!等错误信息,进而导致vip地址失效,使得mysql-cluster的api无法访问。针对这个问题,本文提供了相应的解决方案。 ... [详细]
  • 众筹商城与传统商城的区别及php众筹网站的程序源码
    本文介绍了众筹商城与传统商城的区别,包括所售产品和玩法不同以及运营方式不同。同时还提到了php众筹网站的程序源码和方维众筹的安装和环境问题。 ... [详细]
author-avatar
新起点新娘妆
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有