elasticsearch数据结构
无论是关系型数据库还是非关系型数据库,乃至elasticsearch这种事实上承担着一定储存作用的搜索引擎,数据类型都是非常重要而基础的概念。本文基于elasticsearch 5.x版本。
核心数据类型(Core datatypes)
string
text:全文检索需要分词的类型。
keyword:精确值。合适分组排序。
Caused by: NotSerializableExceptionWrapper[: Fielddata is disabled on text fields by default. Set fielddata=true on [gid] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead.]; nested: IllegalArgumentException[Fielddata is disabled on text fields by default. Set fielddata=true on [gid] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory. Alternatively use a keyword field instead.];
以上异常就是由于对text类型的字段进行排序造成的。
数字类型 Numeric datatypes
long 带符号的64位整数,最小值为-263,最大值为263-1。
integer 一个带32位整数,最小值为-231,最大值为231-1。
short
byte
double
float
half_float 半精度16位IEEE 754浮点数。
scaled_float 支持固定的缩放因子的浮点数。
对于数字类型,熟悉关系型数据库的应该都不难理解 。其中,独特的是half_float和scaled_float两个类型。
官方的解释:
double,float和half_float类型认为-0.0和+0.0是不同的值。因此,在-0.0上执行术语查询将不匹配+0.0,反之亦然。对于范围查询也是如此:如果上限为-0.0,则+0.0将不匹配,如果下限为+0.0,则-0.0将不匹配。
对于浮点类型,使用缩放因子将浮点数据存储到整数中通常更为有效,这是缩放缩放类型在引擎盖下执行的。比如价格,12.34元,缩放因子为100,那么存储为1234。这是一个整数。这大大有助于节省磁盘空间,因为整数比浮点更容易压缩。Date datatype
日期类型 Date datatype
date
JSON中没有日期类型,所以在ELasticsearch中,日期类型可以是以下几种:
日期格式的字符串:e.g. “2015-01-01” or “2015/01/01 12:10:30”.
long类型的毫秒数( milliseconds-since-the-epoch)
integer的秒数(seconds-since-the-epoch)
日期格式可以自定义,如果没有自定义,默认格式如下:
"strict_date_optional_time||epoch_millis"
布尔类型 Boolean datatype
boolean
true和false。但也可以接受自定义值。
范围类型 Range datatypes
integer_range
float_range
long_range
double_range
date_range
ip_range
这个类型的字段可以通过两个字段来界定上下范围。
复杂数据类型 Complex datatypes
数组类型 Array datatype
数组: ["one","two"],[1,2]
嵌套数组: [1, [2,3]] 相当于 [1,2,3]
对象数组: [{ "name": "Mary", "age": 12 },{ "name": "John", "age": 10 }]
动态添加字段时,数组中的第一个值决定字段类型。所有后续值必须是相同的数据类型,或至少可以将后续值强制转换为相同的数据类型。
不支持使用数据类型混合的数组:[10,“some string”]
数组可能包含空值,它们被配置的null_value替换或完全跳过。空数组[]被视为缺少的字段 - 没有值的字段。
对象类型 Object datatype
包含一个json对象。其中可以有个子节点。子节点可以是json对象。

在内部,该文档被索引为一个简单的,平均的键值对列表,如下所示:

真正储存如下:

嵌套对象类型 Nested datatype
同对象类型,不过它可以是一个json数组。
地理数据类型
经纬度类型 Geo-point datatype
复杂形状数据类型 Geo-Shape datatype
geo_shape数据类型便于对任意地理形状进行索引和搜索,如矩形和多边形。当被索引的数据或执行的查询包含除了点之外的形状时,应该使用它。
您可以使用geo_shape Query查询使用此类型的文档。
专门数据类型 Specialised datatypes
IP类型 IP datatype
略。
elasticsearch数据结构的更多相关文章
- ElasticSearch(二十七)type的数据结构
1.什么是type? type,是一个index中用来区分类似的数据的,类似的数据,但是可能有不同的fields,而且有不同的属性来控制索引建立.分词器field的value,在底层的lucene中建 ...
- elasticsearch 之 深入探秘type底层数据结构
1.理论知识 type,是一个index中用来区分类似的数据的,类似的数据,但是可能有不同的fields,而且有不同的属性来控制索引建立.分词器.field的value,在底层的lucene中建立索引 ...
- Elasticsearch 调优 (官方文档How To)
How To Elasticsearch默认是提供了一个非常简单的即开即用体验.用户无需修改什么配置就可以直接使用全文检索.结果高亮.聚合.索引功能. 但是想在项目中使用高性能的Elasticsear ...
- ElasticSearch详解与优化设计
简介 概念 安装部署 ES安装 数据索引 索引优化 内存优化 1简介 ElasticSearch(简称ES)是一个分布式.Restful的搜索及分析服务器,设计用于分布式计算:能够达到实时搜索,稳定, ...
- elasticsearch常用的概念整理
节点node 节点(node)是一个运行着的Elasticsearch实例 集群中一个节点会被选举为主节点(master),它将临时管理集群级别的一些变更,例如新建或删除索引.增加或移除节点等.主节点 ...
- Elasticsearch 教程--数据
在Elasticsearch中,每一个文档都有一个版本号码.每当文档产生变化时(包括删除),_version就会增大.在<版本控制>中,我们将会详细讲解如何使用_version的数字来确认 ...
- Elasticsearch索引(company)_Centos下CURL增删改
目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 1.Elasticsearch索引说明 a. 通过上面几篇博客已经将Elastics ...
- Elasticsearch配置详解、文档元数据
目录 返回目录:http://www.cnblogs.com/hanyinglong/p/5464604.html 1.Elasticsearch配置文件详解 a. 在上面博客中,我们已经安装并且成功 ...
- ElasticSearch基本学习
ES介绍 维基百科使用Elasticsearch来进行全文搜做并高亮显示关键词,以及提供search-as-you-type.did-you-mean等搜索建议功能. 英国卫报使用Elasticsea ...
随机推荐
- 如何将docker镜像文件上传至Docker Hub
一.Docker Hub中新建存储库 注册,登录Docker Hub之后,点击右上角Create Repository,创建存储库,如下图所示: 取个名字,我这里取名为lihui_demo.并且可以选 ...
- https原理及其中所包含的对称加密、非对称加密、数字证书、数字签名
声明:本文章已授权公众号Hollis转载,如需转载请标明转载自https://www.cnblogs.com/wutianqi/p/10654245.html(安静的boy) 一.为什么要使用http ...
- centos安装多个tomcat
1.参考前文安装jdk.第一个tomcat 2.安装第二个tomcat后,修改/etc/profile vi /etc/profile #tomcat1 export CATALINA_BASE=/o ...
- 关于JVM的一些冷知识
(1) Java加载类的一般顺序: 1.静态属性,静态方法声明,静态块. 2.动态属性,普通方法声明,构造块. 3.构造方法. 当加载一个类时,JVM会根据属性的数据类型第一时间赋默认值(一举生成的) ...
- python------面向对象进阶反射详解(重点)
一.反射 通过字符串映射或者修改程序运行时的状态,属性,或者方法. 1.getattr(object,name,default=None) 2.hasattr(object,name) 3.setat ...
- PythonStudy——Python 注释规范
注释规范: 什么是注释? 注释:不会被python解释器解释执行,是提供给开发者阅读代码的提示 单行注释: # 开头的语句 多行注释:出现在文件最上方,用''' '''包裹的语句 Pycha ...
- IETF和W3C的区别
国际互联网协会ISOC和万维网联盟W3C是互联网领域内两大国际协会组织,ISOC旗下IETF机构与W3C是互联网行业内两大标准组织.不可否认「IETF和W3C都是优秀的组织,它们从事着一种使事情按程序 ...
- 汉语言处理工具pyhanlp的拼音转换与字符正则化
汉字转拼音 HanLP中的汉字转拼音功能也十分的强大. 说明: l HanLP不仅支持基础的汉字转拼音,还支持声母.韵母.音调.音标和输入法首字母首声母功能. l HanLP能够识别多音字,也能给繁体 ...
- [zz]LyX中文问题
http://www.cnblogs.com/biaoyu/archive/2012/04/28/2475318.html LyX是一款极为优秀的所见即所得的文档处理软件,与MS Word相比,其排版 ...
- DDR3初识
DDR3初识 选择2:1 ratio 意味用户总线宽度为DDR物理数据接口宽度的4倍.