文章目录
背景
原来一直用的ES6,刚转到ES7踩得一些坑,和一些新特性的学习过程。
1. ES 数据库的存储结构变化:去除了Type
- es6时,官方就提到了es7会删除type,并且es6时已经规定每一个index只能有一个type。在es7中使用默认的_doc作为type,官方说在8.x版本会彻底移除type。
- api请求方式也发送变化,对索引的文档进行操作的时候,默认使用的Type是 _doc
- 如获得某索引的某ID的文档:GET index/_doc/id其中index和id为具体的值
2.创建索引mapping关系的时候,容易出的错:Root mapping definition has unsupported parameters
- ElasticSearch6 中创建索引映射关系的语法
put es_test_index
{
"settings": {
"index": {
"analysis.analyzer.default.type": "ik_max_word"
}
},
"mappings": {
"item": { # type的名字 item
"properties": {
"site_id": {
"type": "long",
"index": True
},
"content": {
"type": "text"
}
}
}
}
}
- ElasticSearch7 中执行需要去掉 Type类型,修改为
put es_test_index
{
"settings": {
"index": {
"analysis.analyzer.default.type": "ik_max_word",
"number_of_shards":3,
"number_of_replicas":2
}
},
"mappings": {
"properties": {
"site_id": {
"type": "long",
"index": True
},
"content": {
"type": "text"
}
}
}
}
3.默认配置变化:默认节点名称为主机名,默认分片数为1,不再是5
4.查询相关速度优化:Weak-AND算法
- weak-and算法,又称为Wand算法, 输入是n个倒排队列,输出top K个得分最高的文档doc
5.彻底废除_all 字段的支持,为提升性能默认不在支持全文检索
6.新增的功能
6.1新增应用程序主动检测功能,搭配对应版本的kibana,用户可监测应用服务的健康状态,并在出现问题后及时发出通知
6.2新增间隔查询(Intervals Queries),用户可设置多字符串在文档中出现的先后顺序进行检索
6.3 自带jdk,所以在安装ES时不再需要单独下载和配置JAVA_HOME。
取消Query结果中的Hits Count的支持(聚合查询除外),使得查询性能大幅提升。这就意味着,每次查询后将不能得到精确的结果集数量
6.4 的集群协调子系统,缩减配置项提升稳定性。时间戳纳秒级支持,提升数据精度
- 移除 minimum_master_nodes 参数,让 Elasticsearch 自己选择可以形成仲裁的节点。
- 典型的主节点选举现在只需要很短的时间就可以完成。
- 集群的伸缩变得更安全、更容易,并且可能造成丢失数据的系统配置选项更少了。
- 节点更清楚地记录它们的状态,有助于诊断为什么它们不能加入集群或为什么无法选举出主节点。