Elasticsearch快速入门 基础篇 (二)Elasticsearch各版本特性

2023-05-16

Elasticsearch快速入门 基础篇 Elasticsearch各版本特性

文章目录

  • Elasticsearch快速入门 基础篇 Elasticsearch各版本特性
  • 前言
  • 一、Elasticsearch 5.x之前
  • 二、Elasticsearch 5.x
  • 三、Elasticsearch 6.x
  • 四、Elasticsearch 7.x
  • 总结
  • 声明
  • 参考文献

前言

通过上节的内容,相信你已经对 Elasticsearch 概念及主要功能有了一个基本的认识,本文将带你一起探索 Elasticsearch 的版本特性。


一、Elasticsearch 5.x之前

Elasticsearch 5.x 和 Elasticsearch 2.x 并不区别很大。早期的 Elasticsearch 版本各种很混乱,直接升级到5.0了。


二、Elasticsearch 5.x

主要特性:

  • 基于 Lucene 6.x

    查询性能提升25%,默认打分机制从 TF-IDF 改为 BM 25

  • Internal engine级别移除了用于避免同一文档并发更新的竞争锁,带来15%-20%的性能提升

  • 提供了第一个Java原生的REST客户端SDK IngestNode

  • 提供了 Painless 脚本,代替Groovy脚本

  • 新增了Profile API

  • 新增了Rollover API

  • 新增Reindex

  • 引入新的字段类型 Text/Keyword 来替换 String

  • 限制索引请求大小,避免大量并发请求压垮 ES

  • 限制单个请求的 shards 数量,默认 1000 个

  • 仅支持非root用户启动


三、Elasticsearch 6.x

主要特性:

  • 基于 Lucene 7.0


  • 稀疏性 Doc Values 的支持

    Elasticserach 的 doc values 是列式存储,文档的原始值都是存放在 doc values 里面的。稀疏性是指,一个索引里面,文档的结构其实是多样性的,每个列中的每个字段都预留了一个存储空间,如果只有少数文档出现很多字段,则可能会导致磁盘空间的巨大浪费。

    Doc Values的优化解决了这个问题,不仅减少了磁盘空间使用量,同时也减少合并时间并提高查询吞吐量,因为可以更好地利用文件系统缓存,读写速度更快。


  • Index sorting

    即在索引阶段的排序,即我们查询的时候有时候会根据某个字段的值进行排序,比如时间、编号等等,如果在索引的时候提取排好序,那么搜索或聚合的时候就会非常快,相应的直接走预先排序好的索引就行了。当然索引的时候会要增加额外开销,适合不怎么变化的索引的场景。


  • 顺序号的支持

    每个 es 的操作都有一个顺序编号,这个属于 es 内部的一个功能,可以提供:快速的分片副本恢复或同步;跨数据中心的节点恢复;甚至提供一个 Changes API 等等


  • 无缝滚动升级

    使之能够从 5 的最后一个版本滚动升级到 6 的最后一个版本,不需要集群的完整重启。无缝滚动升级,也就是不用停服务,在线升级。


  • Removal of types

    在 6.0 里面,开始不支持一个 index 里面存在多个 type 了,所有的新的 index 都将只有一个虚拟的固定的 type: _doc 来代替,基于 type 的 parent-child 关系将通过单独的 join 字段来实现, type 会在 7.0 彻底移除。


  • Index-template inheritance

    索引版本的继承,目前索引模板是所有匹配的都会合并,这样会造成索引模板有一些冲突问题, 6.0 将会只匹配一个,索引创建时也会进行验证。


  • Load aware shard routing

    基于负载的请求路由,目前的搜索请求是全节点轮询,那么性能最慢的节点往往会造成整体的延迟增加,新的实现方式将基于队列的耗费时间自动调节队列长度,负载高的节点的队列长度将减少,让其他节点分摊更多的压力,搜索和索引都将基于这种机制。

    已经关闭的索引将也支持 replica 的自动处理,确保数据可靠。


  • 跨多个 Elasticsearch 群集搜索(CCR)
    和以前一样,Elasticsearch 6.0 能够读取在 5.x 中创建的 Indices ,但不能读取在 2.x 中创建的 Indices 。不同的是,现在不必重新索引所有的旧 Indices ,你可以选择将其保留在 5.x 群集中,并使用跨群集搜索同时在 6.x 和 5.x 群集上进行搜索


四、Elasticsearch 7.x

主要特性:

  • 基于 Lucene 8.0

    Elasticsearch 7 基于 8.0.0,在索引的兼容性上,他可以直接加载 Elasticsearch 6.0 以上的版本创建的索引,Elasticsearch 5.x 创建的索引需要 reindex 到 Elasticsearch 7.x


  • TOP-K 优化

    Lucene 8.0.0 做了大量的新能优化,主要亮点是 TOP-K 的查询优化。在之前的版本中,查询会计算所有命中的文档,但是用户经常查询 ‘a’ , ‘the’ 等词汇,这种词汇不会增加多少文档得分,但迫使查询过程为大量的文档进行打分。

    因此,如果检索结果只需要返回 TOP-K 的结果,而非范围准确的命中数量,可以对此进行优化,Lucene 8 中引入了 WAND 算法来实现此特性。当检索结果小于指定的结果总数时,该优化不会生效。在停止计算命中文档总数之后,查询 QPS 得到大幅提升


  • 集群连接变化
    TransportClient 被废弃,以至于es7的java代码只能使用 RestClient


  • ES数据存储结构变化
    正式废除单个索引下多Type的支持,es6时,官方就提到了es7会删除type,并且es6时已经规定每一个index只能有一个type。在es7中使用默认的_doc作为type,官方说在8.x版本会彻底移除type。api请求方式也发送变化,如获得某索引的某ID的文档:GET index/_doc/id,其中index和id为具体的值


  • High-level REST client 改变

    已删除接受Header参数的API方法;Cluster Health API默认为集群级别


  • ES程序包默认打包jdk
    以至于7.x版本的程序包大小突然边300MB+对比6.x发现,包大了200MB+, 正是JDK的大小


  • 默认配置变化
    默认节点名称为主机名,默认分片数改为1,不再是5,避免Over Sharding


总结

以上就是本文的主要内容,本文简单介绍了 Elasticsearch 各个版本的特性,相信聪明的你已经GET到要点了,更多版本特性细节请查阅官网文档。


声明

以上内容均来源于网络,如有错误,请多多包含。


参考文献

Elasticsearch: 权威指南

Breaking changes in 5.0

Breaking changes in 6.3

Breaking changes in 6.0

Breaking changes in 7.9

Breaking changes in 7.8

Breaking changes in 7.7

Breaking changes in 7.6

Breaking changes in 7.5

Breaking changes in 7.4

Breaking changes in 7.3

Breaking changes in 7.2

Breaking changes in 7.1

Breaking changes in 7.0

Elasticsearch 版本兼容性

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Elasticsearch快速入门 基础篇 (二)Elasticsearch各版本特性 的相关文章

  • Linux设备驱动——第三章字符驱动

    当对幸福的憧憬过于急切 xff0c 那痛苦就在人的心灵深处升起 加缪 本章的目的是编写一个完整的字符设备驱动 我们开发一个字符驱动是因为这一类适合大部分简单的硬件设备 字符驱动也比块驱动易于理解 本章的最终目的是编写一个模块化的字符驱动 x
  • FreeRTOS(一)系统时钟和中断

    RTOS系统运行必需要有时钟 xff0c FreeRTOS可以选择SysTick或TIM作为时钟源 本文以再stm32f1上的移植介绍 选择SysTick需要在FreeRTOSConfig h中取消SysTick Handler 函数的映射
  • 对于USB Bulk通信发送0包的理解

    写Device USB驱动的时候 xff0c 当Bulk送信发送的数据长度恰好是wMaxPacketSize的整数倍时 xff0c 是否应该发送0包的问题搞得我焦头烂额 查找了好多资料 xff0c 有的说要加 xff0c 这是USB协议的一
  • upload漏洞专题

    一 upload上传绕过专题 后缀检验绕过 1 黑名单检测绕过 1 上传文件重命名 span class token comment 由于只有后缀是可控的 span 所以常见的后缀为php中 php2 php3 php4 php5 phtm
  • Pony语言学习(七)——表达式(Expressions)语法(单篇向)

    一 字面量 xff08 Literals xff09 xff08 一 xff09 Bool值 xff1a 没啥要说的 xff0c 就是true和false x1f44a xff08 二 xff09 数值 xff08 Numeric Lite
  • Pony语言学习(八):引用能力(Reference Capabilities)

    xff08 如果你有更好的翻译 xff0c 请务必联系我 我们需要和Rust术语做到翻译看齐 xff09 一 总览 xff08 特译 xff1a https tutorial ponylang io reference capabiliti
  • Pony语言学习(二):基础类型 之 Class

    写在前面的 xff1a 这次咱们来唠唠Pony的基础类型 xff0c 这里说的基础类型指的不是int string boolean float什么内置数据类型 xff0c 而是Pony中用来定义类型的几种方法 xff0c 分别是 Class
  • 匿名管道和命名管道

    进程间通信 xff08 IPC xff09 每个进程有各自不同的用户地址空间 xff0c 任何一个进程的全局变量在另一个进程中都看不到 所以进程之间要交换数据必须通过内核 xff0c 在内核中开辟一块缓冲区 xff0c 进程1把数据从用户空
  • ROS修改rosbag中话题的frame_id,以及发布坐标在Rviz中与点云融合显示

    ROS修改rosbag中话题的frame id xff0c 以及发布坐标在Rviz中与点云融合显示 读取rosbag xff0c 修改话题frame id与话题名并循环发布 span class token keyword import s
  • 定义类模板,未定义的引用

    在使用类模板的时候 xff0c 将类的申明和定义放在两个文件中 xff0c 在编译的时候出现 XXX未定义的引用 xff0c 即找不到对应的函数实现 解决办法是 xff1a 将类的定以和申明都放在一个头文件中 xff0c 这样就可以避免上述
  • It is a distutils installed project

    方法1 xff1a 方法2 xff1a 直接全局搜索对应文件 xff0c 具体包括 34 package name 34 文件夹 和 34 package name 34 egg info xff0c 找到后直接删除即可 eg sudo f
  • git将当前修改文件生成patch

    应用场景 xff1a 只想将当前文件夹中改动的文件打包成一个patch xff0c 并不想提交相应的代码 执行命令 xff1a git diff nova api openstack compute servers py nova cmd
  • OpenStack--虚拟机操作(挂起、暂停和搁置)

    1 OpenStack虚拟机三种操作 1 1 挂起和恢复 xff08 suspend和resume xff09 挂起 xff1a openstack中的挂起 xff08 suspend xff09 操作是将虚拟机的内存保存到磁盘中 xff0
  • eMMC 里 DDR52 HS200 HS400 等的含义

    eMMC 里 DDR52 HS200 HS400 这些名词指的是不同的速度 DDR52就是最高 52M clock xff0c 数据速率就是 52 x 2 61 104 HS200 就是最高 200M clock xff0c 单通道 xff
  • Libvirt的job机制3--基本原理

    在Job机制简介中介绍了在libvirt中调用接口时如何使用Job机制 xff1b 在条件变量基本原理中介绍了条件变量的一些基本原理 xff0c 这个是Job机制的基础 本文主要介绍Job机制中用到的一些函数 结构体等变量 xff0c 分析
  • libvirt初始化流程分析

    libvirtd daemon初始化流程比较复杂 xff0c 本文对代码流程进行初步分析 xff0c 可能有不对的地方 xff0c 随时会进行更新和补充 总体代码流程 main remote remote deamon c daemonCo
  • OpenStack调试方法总结

    1 利用remote pdb进行调试 下载链接remote pdb 2 0 0 py2 py3 none any whl 虚拟化文档类资源 CSDN下载 from remote pdb import RemotePdb RemotePdb
  • Compute通过Conductor访问数据库方法

    目录 方法注册 实例序列化与反序列化 conductor与数据库交互 Instance类对象与ComputeManager类对象 compute服务的worker数量 这里以instance save函数为例进行说明 方法注册 nova组件
  • oslo_messaging学习系列之二《OpenStack中使用消息队列》

    目录 消息驱动 oslo messaging模块详解 Transport Target xff08 oslo messaging target Target xff09 Server RPC Client RPC Client参数传递 消息
  • PX4日志文件分析

    FlightPlot画图软件 xff1a http www pixhawk com dev flightplot 支持的日志格式 xff1a PX4自动驾驶仪日志 xff08 px4log 由 sdlog2 生成 xff09 APM二进制日

随机推荐