irpas技术客

ElasticSearch(五)ElasticSearch字段类型_lomtom_elasticsearch字段类型

未知 5283

作者: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-1integer-2^31到 2^31-1short-2^15到 2^15-1byte-2^7 到 2^7-1double64位双精度float32位双精度half_float16位双精度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_rangefloat_rangelong_rangedouble_rangedate_rangeip_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、特殊类型

本文基本取自江南一点雨,请支持原作者,作者录有视频,更容易理解哦


1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,会注明原创字样,如未注明都非原创,如有侵权请联系删除!;3.作者投稿可能会经我们编辑修改或补充;4.本站不提供任何储存功能只提供收集或者投稿人的网盘链接。

标签: #1核心类型1 #通常用于基于文本的相关性搜索 #全文本字段可以分词 #2