ElasticSearch(五)ElasticSearch字段类型
- December 6, 2021
作者:lomtom
个人网站:lomtom.cn 🔗
个人公众号:博思奥园 🔗
你的支持就是我最大的动力。
ES系列:
- ElasticSearch(一) ElasticSearch入门
- ElasticSearch(二)在ElasticSearch 中使用中文分词器
- ElasticSearch(三)ElasticSearch索引操作
- ElasticSearch(四)ElasticSearch文档操作
- ElasticSearch(五)ElasticSearch字段类型
作者:lomtom
个人网站:lomtom.cn 🔗
个人公众号:博思奥园 🔗
你的支持就是我最大的动力。
ES系列:
- ElasticSearch(一) ElasticSearch入门 🔗
- ElasticSearch(二)在ElasticSearch 中使用中文分词器 🔗
- ElasticSearch(三)ElasticSearch索引操作 🔗
- ElasticSearch(四)ElasticSearch文档操作 🔗
- ElasticSearch(五)ElasticSearch字段类型 🔗
1、核心类型
1. 字符串类型
- string:过期的字符串类型(在ES5之前使用,ES5后被Text和keyword替代)
- text:全文本。通常用于基于文本的相关性搜索。全文本字段可以分词。全文本字段不用于排序,很少用于聚合等操作。
- keyword:这种类型适用于结构化的字段
区别:
keyword:存储数据时候,不会分词建立索引 text:存储数据时候,会自动分词,并生成索引。
2. 数字类型
类型 | 取值范围 |
---|---|
long | -2^63 到 2^63-1 |
integer | -2^31到 2^31-1 |
short | -2^15到 2^15-1 |
byte | -2^7 到 2^7-1 |
double | 64位双精度 |
float | 32位双精度 |
half_float | 16位双精度 |
scaled_float | 缩放类型的浮点类型 |
1、在满足需求的情况下,优先使用范围小的字段。字段长度越短,索引和搜索的效率越高。 2、浮点数,优先考虑使用 scaled_float。
3. 日期类型
由于 JSON 中没有日期类型,所以 es 中的日期类型形式就比较多样:
2020-11-11 或者 2020-11-11 11:11:11 一个从 1970.1.1 零点到现在的一个秒数或者毫秒数。
es 内部将时间转为 UTC,然后将时间按照 millseconds-since-the-epoch 的长整型来存储。
4. 布尔类型
5. 二进制类型
默认不存储,也不可搜索。
6. 范围类型
指定范围的时,可以使用 gt、gte、lt、lte。
- integer_range
- float_range
- long_range
- double_range
- date_range
- ip_range
2、复合类型
1. 数组类型
es 中没有专门的数组类型。默认情况下,任何字段都可以有一个或者多个值。需要注意的是,数组中的元素必须是同一种类型。
添加数组是,数组中的第一个元素决定了整个数组的类型。
2. 对象类型
由于 JSON 本身具有层级关系,所以文档包含内部对象。内部对象中,还可以再包含内部对象。
PUT product/_doc/2
{
"date":"2020-11-11T11:11:11Z",
"ext_info":{
"address":"China"
}
}
3. 嵌套类型
nested 是 object 中的一个特例。
如果使用 object 类型,假如有如下一个文档:
{
"user":[
{
"first":"Zhang",
"last":"san"
},
{
"first":"Li",
"last":"si"
}
]
}
由于 Lucene 没有内部对象的概念,所以 es 会将对象层次扁平化,将一个对象转为字段名和值构成的简单列表。即上面的文档,最终存储形式如下:
{
"user.first":["Zhang","Li"],
"user.last":["san","si"]
}
扁平化之后,用户名之间的关系没了。这样会导致如果搜索 Zhang si 这个人,会搜索到。
此时可以 nested 类型来解决问题,nested 对象类型可以保持数组中每个对象的独立性。nested 类型将数组中的每一饿对象作为独立隐藏文档来索引,这样每一个嵌套对象都可以独立被索引。
{
{
"user.first":"Zhang",
"user.last":"san"
},{
"user.first":"Li",
"user.last":"si"
}
}
优点
文档存储在一起,读取性能高。
缺点
更新父或者子文档时需要更新更个文档。
3、地理类型
4、特殊类型
本文基本取自江南一点雨 🔗,请支持原作者,作者录有视频,更容易理解哦