一.官网地址
https://www.elastic.co/cn/
二.ES的目录结构
三.ES的核心概念
索引(index)
类似的数据放在一个索引,非类似的数据放不同索引, 一个索引也可以?解成一个关系型数据库。
类型(type)
代表document属于index中的哪个类别(type)
也有一种说法一种type就像是数据库一类表,比如dept表,user表。
注意ES每个大版本之间区别很大:
ES 5.x中?一个index可以有多种type。
ES 6.x中?一个index只能有?一种type。
ES 7.x以后已经移除type这个概念。
映射(mapping)
mapping定义?每个字段的类型等信息。相当于关系型数据库中的表结构。
常用数据类型:text、keyword、number、array、range、boolean、date、geo_point、ip、nested、object
text:默认会进行分词,支持模糊查询(5.x之后版本string类型已废弃,请大家使用text)。keyword:不进行分词;keyword类型默认开启doc_values来加速聚合排序操作,占用了大量磁盘io 如非必须可以禁用doc_values。number:如果只有过滤场景 用不到range查询的话,使用keyword性能更佳,另外数字类型的doc_values比字符串更容易压缩。array:es不需要显示定义数组类型,只需要在插入数据时用'[]'表示即可,'[]'中的元素类型需保持一致。range:对数据的范围进行索引;目前支持 number range、date range 、ip range。boolean: 只接受true、false 也可以是字符串类型的“true”、“false”date:支持毫秒、根据指定的format解析对应的日期格式,内部以long类型存储。geo_point:存储经纬度数据对。ip:将ip数据存储在这种数据类型中,方便后期对ip字段的模糊与范围查询。nested:嵌套类型,一种特殊的object类型,存储object数组,可检索内部子项。object:嵌套类型,不支持数组。
es7.0新增
数据类型:alias、date_nanos、features、vector
- alias:并不实际存在,而是对已有字段的一种别名映射,搜索该字段与搜索实际字段返回的内容没有本质的区
- date_nanos:另一种时间类型,可精确到纳秒,用法类似date。
- features:用来存储特征向量,数据不能为0和负数,查询时只能使用rank_feature
- query,该字段主要为支持后续机器学习相关功能做准备。
- vector:存储特征数组,支持稀疏与稠密向量存储,该字段主要为支持后续机器学习相关功能做准备
文档(document)
一个document相当于关系型数据库中的??记录。
字段(field)
相当于关系型数据库表的字段
集群(cluster)
集群由一个或多个节点组成,?个集群有?个默认名称"elasticsearch"。
节点(node)
集群的节点,?台机?或者一个进程
分片和副本(shard)
副本是分片的副本。分片有主分片(primary Shard)和副本分片(replica Shard)之分。
一个Index数据在物理上被分布在多个主分片中,每个主分片只存放部分数据。
每个主分片可以有多个副本,叫副本分片,是主分片的复制。
四.elasticsearch7.0有哪些重大改进
1、彻底废弃多type支持,包括api层面,之前版本可在一个索引库下创建多个type。2、彻底废弃_all字段支持,为提升性能默认不再支持全文检索,即7.0之后版本进行该项配置会报错。3、新增应用程序主动监测功能,搭配对应的kibana版本,用户可监测应用服务的健康状态,并在出现问题后及时发出通知。4、取消query结果中hits count的支持(聚合查询除外),使得查询性能大幅提升(3x-7x faster)。这意味着,每次查询后将不能得到精确的结果集数量。5、新增intervals query ,用户可设置多字符串在文档中出现的先后顺序进行检索。6、新增script_core ,通过此操作用户可以精确控制返回结果的score分值。7、优化集群协调子系统,缩减配置项提升稳定性。8、新增 alias、date_nanos、features、vector等数据类型。9、7.0自带java环境,所以我们在安装es时不再需要单独下载和配置java_home。10、7.0将不会再有OOM的情况,JVM引入了新的circuit breaker(熔断)机制,当查询或聚合的数据量超出单机处理的最大内存限制时会被截断