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 ...
随机推荐
- python txt文件常用读写操作
文件的打开的两种方式 f = open("data.txt","r") #设置文件对象 f.close() #关闭文件 #为了方便,避免忘记close掉这个文件 ...
- extjs_10_自己定义combotree组件
1.项目截图 2.treedata.json { text : "root", expanded : true, expandable : true, children : [{ ...
- DNS基础
什么是DNS? DNS--Domain name system,域名系统,简单来说就是域名和IP地址间的映射关系.当你在浏览器的地址栏输入网址(或域名,如 www,baidu.com)的时候,在网络中 ...
- AR外包,就找北京动点软件,长年承接AR外包(案例丰富可签合同,内附案例演示)
北京团队长年承接AR项目外包 咨询QQ:372900288 微信:liuxiang0884 以下是AR项目案例演示,索取更多案例请通过以上方式在线联系我们
- Linux系统目录权限chmod误操作权限修复方法
Linux中,如果意外误操作将/目录权限批量设置,比如chmod -R 777 / ,系统中的大部分服务以及命令将无法使用,这时候可以通过系统自带的getfacl命令来拷贝和还原系统权限,若是其他系统 ...
- problem: vue中获取动态元素高度
前言:始终要相信你能想到的解决方案,基本上都是可以用技术实现的... 解决方法就是在mounted中在this.$nextTick()去获取,如果没有获取到,不是写法错就是,元素没有绑定对地方,注意检 ...
- Consul之:服务注册与发现
一.服务的管理(注册与发现)有三种方式: 1:通过配置文件的方式静态注册2:通过HTTP API接口来动态注册(spring cloud使用方式,spring cloud中使用的是consul api ...
- 使用docker查看jvm状态,在docker中使用jmap,jstat
Docker中查看JVM的信息: 1. 列出docker容器:docker ps 2. 标准输入和关联终端:docker exec -it 容器ID bash 3. 查找出j ...
- 个人测试SQL学习
--普通方法赋值 declare @a int print @a --Update 方法赋值 ) ' print @name --Select 语句赋值 ) ' print @name ) selec ...
- sync;sync;sync;reboot
Sync命令 在用reboot命令启动unix系统后,系统提示出错信息,部分应用程序不能正常工作.经仔细检查系统文件,并和初始的正确备份进行比较,发现某些文件确实被破坏了,翻来覆去找不到文件遭破坏的原 ...