作者: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. 数字类型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