elasticsearch的数据类型

1.Alias datatype----------别名类型

一个alias映射为索引中的一个字段定义的替代名称。别名可以代替搜索请求中的目标字段,也可以使用其他其他API(例如field features)使用。
{
“mappings”: {
“properties”: {
“distance”: {
“type”: “long”
},
“route_length_miles”: {
“type”: “alias”,
“path”: “distance”
},
“transit_mode”: {
“type”: “keyword”
}
}
}
}

2.Arrays datatype---------- 集合类型

在Elasticsearch中,没有专用的array数据类型。默认情况下,任何字段都可以包含零个或多个值,但是,数组中的所有值都必须具有相同的数据类型
{
“message”: “some arrays in this document…”,
“tags”: [ “elasticsearch”, “wow” ],
“lists”: [
{
“name”: “prog_list”,
“description”: “programming list”
},
{
“name”: “cool_list”,
“description”: “cool stuff list”
}
]
}

3. Binary datatype----------二进制类型

该binary类型接受二进制值作为 Base64编码的字符串。该字段默认情况下不存储,并且不可搜索
{
“mappings”: {
“properties”: {
“name”: {
“type”: “text”
},
“blob”: {
“type”: “binary”
}
}
}
}

4.Boolean datatype---------布尔类型

布尔字段接受JSON true和false值,但也可以接受解释为true或false的字符串
{
“mappings”: {
“properties”: {
“is_published”: {
“type”: “boolean”
}
}
}

5.Date datatype----------日期类型

JSON没有日期数据类型,因此Elasticsearch中的日期可以是:
a.包含格式化日期的字符串,例如"2015-01-01"或"2015/01/01 12:10:30"。
b.从纪元以来 代表毫秒的长整数。
c.代表秒后的整数。
在内部,日期会转换为UTC(如果指定了时区),并存储为一个整数,表示从纪元以来的毫秒数。
日期查询在内部转换为这种长表示形式的范围查询,并且聚合和存储字段的结果将转换为字符串,具体取决于与该字段关联的日期格式。
{
“mappings”: {
“properties”: {
“date”: {
“type”: “date”
“format”: “yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis”
}
}
}
}

PUT my_index/_doc/1
{ “date”: “2015-01-01” }

PUT my_index/_doc/2
{ “date”: “2015-01-01T12:10:30Z” }

PUT my_index/_doc/3
{ “date”: 1420070400001 }

GET my_index/_search
{
“sort”: { “date”: “asc”}
}

6.Date nanoseconds datatype----------日期纳秒数据类型

该数据类型是该数据类型的补充date。但是,两者之间有重要区别。现有date数据类型以毫秒为单位存储日期。该date_nanos数据类型存储在纳秒的分辨率,这限制了它的范围内的日期从大约1970至2262年,为日期仍然作为从epoch长表示纳秒存储日期。
纳秒级的查询在内部转换为对此长表示形式的范围查询,并且聚合和存储的字段的结果将转换为字符串,具体取决于与该字段关联的日期格式。
{
“mappings”: {
“_doc”: {
“properties”: {
“date”: {
“type”: “date_nanos”
}
}
}
}
}
PUT my_index/_doc/1
{ “date”: “2015-01-01” }

7.Dense vector datatype----------密集矢量数据类型

此功能是试验性的,在将来的版本中可能会完全更改或删除。Elastic会尽力解决所有问题,但是实验性功能不受官方GA功能的支持SLA约束。

一个dense_vector字段存储浮点值的密集向量。向量中的最大维数不得超过1024。dense_vector字段是单值字段。

这些向量可用于文档评分。例如,文档分数可以表示给定查询向量和索引文档向量之间的距离。
{
“mappings”: {
“properties”: {
“my_vector”: {
“type”: “dense_vector”,
“dims”: 3
},
“my_text” : {
“type” : “keyword”
}
}
}
}

PUT my_index/_doc/1
{
“my_text” : “text1”,
“my_vector” : [0.5, 10, 6]
}

8.Flattened datatype----------扁平化的数据类型

默认情况下,对象中的每个子字段都分别进行映射和索引。如果子字段的名称或类型事先未知,则将动态映射它们 。
该flattened类型提供了一种替代方法,其中将整个对象映射为单个字段。给定一个对象,flattened 映射将解析出其叶子值,并将它们作为关键字索引到一个字段中。然后可以通过简单的查询和聚合来搜索对象的内容。
此数据类型对于索引具有大量或未知数量的唯一键的对象很有用。仅为整个JSON对象创建一个字段映射,这可以帮助防止 由于大量不同的字段映射而导致映射爆炸。
另一方面,展平的对象字段在搜索功能方面存在折衷。仅允许基本查询,不支持数字范围查询或突出显示。有关限制的更多信息,请参见“ 支持的操作”部分。
NOTE
该flattened映射类型应该不被用于索引所有的文档内容,它将所有值作为关键字,不提供完整的搜索功能。在大多数情况下,默认方法(每个子字段在映射中都有其自己的条目)有效。
PUT bug_reports
{
“mappings”: {
“properties”: {
“title”: {
“type”: “text”
},
“labels”: {
“type”: “flattened”
}
}
}
}

POST bug_reports/_doc/1
{
“title”: “Results are not sorted correctly.”,
“labels”: {
“priority”: “urgent”,
“release”: [“v1.2.5”, “v1.3.0”],
“timestamp”: {
“created”: 1541458026,
“closed”: 1541457010
}
}
}

9.Geo-point datatype----------地理位置数据类型

类型的字段geo_point接受纬度-经度对,可以使用:
a.在边界框内,中心点一定距离内或多边形内找到地理点。
b.以地理位置 或距中心点的距离汇总文档。
c.将距离整合到文档的相关性分数中。
d.按距离对文档 进行排序。
{
“mappings”: {
“properties”: {
“location”: {
“type”: “geo_point”
}
}
}
}

PUT my_index/_doc/1
{
“text”: “Geo-point as an object”,
“location”: {
“lat”: 41.12,
“lon”: -71.34
}
}

PUT my_index/_doc/2
{
“text”: “Geo-point as a string”,
“location”: “41.12,-71.34”
}

10.Geo-shape datatype---------地理形状数据类型

的geo_shape数据类型方便的索引和与任意的地理搜索为矩形和多边形的形状,例如。当正在索引的数据或正在执行的查询包含除点以外的其他形状时,应使用它。

您可以使用geo_shape Query使用此类型查询文档 。
{
“mappings”: {
“properties”: {
“location”: {
“type”: “geo_shape”
}
}
}
}

11.IP datatype---------- IP数据类型

一个ip字段可以索引/存储IPv4或 IPv6地址
{
“mappings”: {
“properties”: {
“ip_addr”: {
“type”: “ip”
}
}
}
}

PUT my_index/_doc/1
{
“ip_addr”: “192.168.1.1”
}

12.Join datatype----------联接数据类型

该join数据类型是创建相同的索引文件中的父/子关系的特殊领域。本relations节在文档中定义了一组可能的关系,每个关系都是父名称和子名称。
{
“mappings”: {
“properties”: {
“my_join_field”: {
“type”: “join”,
“relations”: {
“question”: “answer”
}
}
}
}
}
PUT my_index/_doc/1?refresh
{
“text”: “This is a question”,
“my_join_field”: {
“name”: “question”
}
}

PUT my_index/_doc/2?refresh
{
“text”: “This is another question”,
“my_join_field”: {
“name”: “question”
}
}

13.Keyword datatype---------关键字数据类型

用于索引结构化内容(例如ID,电子邮件地址,主机名,状态代码,邮政编码或标签)的字段。
它们通常用于过滤(找到我的所有博客文章,其中 status为published),排序,和聚合。关键字字段只能按其确切值进行搜索。
{
“mappings”: {
“properties”: {
“tags”: {
“type”: “keyword”
}
}
}
}

14.Nested datatype---------嵌套数据类型

该nested类型是object数据类型的专用版本,它允许以可以彼此独立地查询对象的方式对对象数组进行索引。
{
“group” : “fans”,
“user” : [
{
“first” : “John”,
“last” : “Smith”
},
{
“first” : “Alice”,
“last” : “White”
}
]
}
GET my_index/_search
{
“query”: {
“bool”: {
“must”: [
{ “match”: { “user.first”: “Alice” }},
{ “match”: { “user.last”: “Smith” }}
]
}
}
}

15.Numeric datatypes----------数值数据类型

long
有符号的64位整数,最小值为,最大值为。 -263263-1
integer
带符号的32位整数,最小值为,最大值为。 -231231-1
short
有符号的16位整数,最小值为-32,768,最大值为32,767。
byte
带符号的8位整数,最小值为-128,最大值为127。
double
一个双精度64位IEEE 754浮点数,限制为有限值。
float
单精度32位IEEE 754浮点数,限制为有限值。
half_float
半精度16位IEEE 754浮点数,限制为有限值。
scaled_float
以a为后缀的浮点数long,由固定double比例因子缩放。
{
“mappings”: {
“properties”: {
“number_of_bytes”: {
“type”: “integer”
},
“time_in_seconds”: {
“type”: “float”
},
“price”: {
“type”: “scaled_float”,
“scaling_factor”: 100
}
}
}
}

16.Object datatype----------对象数据类型

SON文档本质上是分层的:文档可能包含内部对象,而内部对象又可能包含内部对象本身
PUT my_index/_doc/1
{
“region”: “US”,
“manager”: {
“age”: 30,
“name”: {
“first”: “John”,
“last”: “Smith”
}
}
}

17.Percolator type----------过滤器类型

该percolator字段类型解析JSON结构到本机查询和存储了查询,使渗滤液查询 可以用它来搭配提供的文件。
包含json对象的任何字段都可以配置为过滤器字段。过滤器字段类型没有设置。仅配置percolator 字段类型就足以指示Elasticsearch将字段视为查询。
{
“mappings”: {
“properties”: {
“query”: {
“type”: “percolator”
},
“field”: {
“type”: “text”
}
}
}
}

18.Range datatypes----------范围数据类型

integer_range
一个带符号的32位整数范围,最小值为,最大值为。 -231231-1
float_range
一系列单精度32位IEEE 754浮点值。
long_range
一个带符号的64位整数范围,最小值为,最大值为。 -263263-1
double_range
一系列双精度64位IEEE 754浮点值。
date_range
自系统时代以来经过的一系列日期值,表示为无符号的64位整数毫秒。
ip_range
支持IPv4或 IPv6(或混合)地址的一系列ip值。
{
“settings”: {
“number_of_shards”: 2
},
“mappings”: {
“properties”: {
“expected_attendees”: {
“type”: “integer_range”
},
“time_frame”: {
“type”: “date_range”,
“format”: “yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis”
}
}
}
}

19.Rank feature datatype----------等级特征数据类型

一个rank_feature字段可以索引号,让他们以后可以用来提高文档与查询rank_feature的查询。
{
“mappings”: {
“properties”: {
“pagerank”: {
“type”: “rank_feature”
},
“url_length”: {
“type”: “rank_feature”,
“positive_score_impact”: false
}
}
}
}

20.Rank features datatype-----------等级特征数据类型

一个rank_features字段可以索引数字特征向量,让他们以后可以用来提高文档与查询 rank_feature的查询。
它类似于rank_feature数据类型,但更适合于特征列表稀疏的情况,因此为每个特征添加一个字段到映射中是不合理的。
PUT my_index
{
“mappings”: {
“properties”: {
“topics”: {
“type”: “rank_features”
}
}
}
}

PUT my_index/_doc/1
{
“topics”: {
“politics”: 20,
“economics”: 50.8
}
}

PUT my_index/_doc/2
{
“topics”: {
“politics”: 5.2,
“sports”: 80.1
}
}

GET my_index/_search
{
“query”: {
“rank_feature”: {
“field”: “topics.politics”
}
}
}

21.Search-as-you-type datatype----------按搜索自己的数据类型

该search_as_you_type字段类型是优化,以提供超出现成的服务于一个作为你型完成使用情况查询的支持文本类领域。它创建了一系列子字段,这些子字段将被分析以索引可被部分与整个索引文本值部分匹配的查询有效匹配的术语。支持前缀完成(即,匹配项从输入的开头开始)和中缀完成(即,匹配项在输入中的任何位置)。
{
“mappings”: {
“properties”: {
“my_field”: {
“type”: “search_as_you_type”
}
}
}
}

22.Sparse vector datatype----------稀疏矢量数据类型

此功能是试验性的,在将来的版本中可能会完全更改或删除。Elastic会尽力解决所有问题,但是实验性功能不受官方GA功能的支持SLA约束。
一个sparse_vector字段存储浮点值的稀疏向量。向量中的最大维数不能超过1024。文档之间的维数可以不同。甲sparse_vector字段是一个单值字段。
这些向量可用于文档评分。例如,文档分数可以表示给定查询向量和索引文档向量之间的距离。
您将一个稀疏向量表示为一个对象,其中对象字段是维,而字段值是这些维的值。维度是从0到65535编码为字符串的整数值。尺寸不必按顺序排列。
{
“mappings”: {
“properties”: {
“my_vector”: {
“type”: “sparse_vector”
},
“my_text” : {
“type” : “keyword”
}
}
}
}

PUT my_index/_doc/1
{
“my_text” : “text1”,
“my_vector” : {“1”: 0.5, “5”: -0.5, “100”: 1}
}

PUT my_index/_doc/2
{
“my_text” : “text2”,
“my_vector” : {“103”: 0.5, “4”: -0.5, “5”: 1, “11” : 1.2}
}

23.Text datatype----------文本数据类型

用于索引全文值的字段,例如电子邮件的正文或产品的描述。这些字段是analyzed,也就是说,它们通过分析器传递,以便 在被索引之前将字符串转换为单个术语的列表。通过分析过程,Elasticsearch可以在 每个全文字段中搜索单个单词。文本字段不用于排序,很少用于聚合(尽管 重要的文本聚合 是一个明显的例外)。
{
“mappings”: {
“properties”: {
“full_name”: {
“type”: “text”
}
}
}
}

24.Token count datatype----------令牌计数数据类型

类型字段token_count实际上是一个integer接受字符串值,对其进行分析,然后为字符串中的令牌数编制索引的字段
{
“mappings”: {
“properties”: {
“name”: {
“type”: “text”,
“fields”: {
“length”: {
“type”: “token_count”,
“analyzer”: “standard”
}
}
}
}
}
}

25.Shape datatype----------状数据类型

的shape数据类型方便的索引和搜索任意x, y笛卡尔形状,例如矩形和多边形。它可用于索引和查询其坐标属于二维平面坐标系的几何。

您可以使用shape Query使用此类型查询文档 。
{
“mappings”: {
“properties”: {
“geometry”: {
“type”: “shape”
}
}
}
}

猜你喜欢

转载自blog.csdn.net/weixin_41656377/article/details/103699283
今日推荐