ElasticSearch 基础(一)之发展史

这篇具有很好参考价值的文章主要介绍了ElasticSearch 基础(一)之发展史。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、Elasticsearch 简介

Elasticsearch 是一个实时的分布式搜索分析引擎,它能让你以前所未有的速度和规模,去探索你的数据。 它被用作全文检索、结构化搜索、分析以及这三个功能的组合。

Elasticsearch 中没有一个单独的组件是全新的或者是革命性的。全文搜索很久之前就已经可以做到了, 就像很早之前出现的分析系统和分布式数据库。 革命性的成果在于将这些单独的,有用的组件融合到一个单一的、一致的、实时的应用中。对于初学者而言它的门槛相对较低, 而当你的技能提升或需求增加时,它也始终能满足你的需求。

Elasticsearch 是一个开源的搜索引擎,建立在一个全文搜索引擎库 Apache Lucene™ 基础之上。 Lucene 可以说是当下最先进、高性能、全功能的搜索引擎库—​无论是开源还是私有。但是 Lucene 仅仅只是一个库。为了充分发挥其功能,你需要使用 Java 并将 Lucene 直接集成到应用程序中。 更糟糕的是,您可能需要获得信息检索学位才能了解其工作原理。Lucene 非常 复杂。Elasticsearch 也是使用 Java 编写的,它的内部使用 Lucene 做索引与搜索,但是它的目的是使全文检索变得简单, 通过隐藏 Lucene 的复杂性,取而代之的提供一套简单一致的 RESTful API

  • Lucene 是什么?
    • Lucene是非常优秀的成熟的 开源的 免费的纯 纯java 语言的全文索引检索工具包。
    • Lucene是一个高性能、可伸缩的信息搜索(IR)库。Information Retrieval(IR) library.它使你可以为你的应用程序添加索引和搜索能力。
    • Lucene的作者Doug Cutting是资深的全文索引/检索专家,最开始发布在他本人的主页上,2001年10月贡献给APACHE,成为APACHE基金的一个子项目。
    • Lucene是一个IR库而不是现成的产品,当然也不是Lucene的初识者常常认为的web爬行器。

二、Elasticsearch 发展史

重要版本发布及版本特性:

  • 0.4:2010年2月第一次发布

    • 2010年2月8日, Shay Banon 发表了一篇博客,说他基于Lucene开发(封装 ???)了一个分布式搜索引擎,实现了一些功能。。。
  • 0.7:2010年5月

    • 2010年5月14日发布,第一个可以查询到发版信息的版本,重要特性:
      • Zen Discovery 自动发现模块
      • Groovy Client支持
      • 简单的插件管理机制
      • 更好支持ICU分词器
      • 更多的管理API
  • 1.0:2014年2月

    • 2014年2月14日发布,重要特性:
      • Snapshot/Restore API 备份恢复API
      • 支持聚合分析Aggregations
      • CAT API 支持
      • 支持联盟查询
      • 断路器支持
      • Doc values 引入
  • 2.0:2015年10月

    • 2015年10月28日发布,重要特性:
      • 增加了 pipleline Aggregations
      • query/filter 查询合并,都合并到query中,根据不同的上下文执行不同的查询
      • 存储压缩可配置
      • Rivers 模块被移除
      • Multicast 组播发现被移除,成为一个插件,生产环境必须配置单播地址
  • 5.0:2016年10月

    • 2016年10月26日发布,重要特性:
      • Lucene 6.x 的支持,磁盘空间少一半;索引时间少一半;查询性能提升25%;支持IPV6。
      • Internal engine级别移除了用于避免同一文档并发更新的竞争锁,带来15%-20%的性能提升
      • Shrink API ,它可将分片数进行收缩成它的因数,如之前你是15个分片,你可以收缩成5个或者3个又或者1个,那么我们就可以想象成这样一种场景,在写入压力非常大的收集阶段,设置足够多的索引,充分利用shard的并行写能力,索引写完之后收缩成更少的shard,提高查询性能
      • 提供了第一个Java原生的REST客户端SDK
      • IngestNode,之前如果需要对数据进行加工,都是在索引之前进行处理,比如logstash可以对日志进行结构化和转换,现在直接在es就可以处理了
      • 提供了 Painless 脚本,代替Groovy脚本
  • 6.0:2017年8月

    • 2017年8月31日发布,重要特性:
      • 稀疏性 Doc Values 的支持
      • Index sorting,即索引阶段的排序。
      • 顺序号的支持,每个 es 的操作都有一个顺序编号(类似增量设计)
      • 无缝滚动升级
      • Removal of types,在 6.0 里面,开始不支持一个 index 里面存在多个 type
      • Index-template inheritance,索引版本的继承,目前索引模板是所有匹配的都会合并,这样会造成索引模板有一些冲突问题, 6.0 将会只匹配一个,索引创建时也会进行验证
      • Load aware shard routing, 基于负载的请求路由,目前的搜索请求是全节点轮询,那么性能最慢的节点往往会造成整体的延迟增加,新的实现方式将基于队列的耗费时间自动调节队列长度,负载高的节点的队列长度将减少,让其他节点分摊更多的压力,搜索和索引都将基于这种机制。
      • 已经关闭的索引将也支持 replica 的自动处理,确保数据可靠。
  • 7.0:2019年4月

    • 2019年4月10日发布,重要特性:
      • 引入了真正的内存断路器,它可以更精准地检测出无法处理的请求,并防止它们使单个节点不稳定
      • Zen2 是 Elasticsearch 的全新集群协调层,提高了可靠性、性能和用户体验,变得更快、更安全,并更易于使用
      • 查询优化
        • 更快的前 k 个查询
        • 间隔查询
        • Function score 2.0
  • 8.0:2022年2月

    • 2022年2月11日发布,重要特性:
      • REST API 兼容性
        • 8.0 为 Elasticsearch REST APIs 引入了一些重大的变化。Elasticsearch 已经在 REST API 中增加了对 7.x 兼容性 header 的支持。这些可选的 header 文件让你向 8.0 集群发出 7.x 兼容的请求,并收到 7.x 兼容的响应。
      • 安全功能在默认情况下被启用和配置,首次启动 Elasticsearch 时,会自动进行以下安全配置:
        • 为传输层和 HTTP 层生成 TLS 证书和密钥。
        • TLS 配置设置被写入elasticsearch.yml。
        • 为 elastic 用户生成密码。
        • 为 Kibana 生成一个注册令牌。
      • 系统索引得到更好保护
        • 在 Elasticsearch 8.0 中做了一些改变来保护系统索引不被直接访问。要访问系统索引的话,用户现在必须把 allow_restricted_indices 权限设置为 true。
        • superuser 角色也不再给予系统索引的写入权限。因此,内置的 elastic superuser 默认不能改变系统索引。
        • 此后,开发者应使用 Kibana 或相关的 Elasticsearch APIs 来管理某个功能的数据,而不是访问系统索引。如果你直接访问系统索引,Elasticsearch 将在 API 响应的 header 中和废弃日志中返回警告。
      • 新的 kNN 搜索(kNN搜索是通过相似度判断来根据查询向量查找K个邻近的向量),使用kNN的场景有:
        • 基于自然语言处理(NLP)算法的相关性排序。
        • 产品推荐和推荐引擎。
        • 图片或视频的相似搜索。
      • 更新了倒排索引的内部数据结构,节省了磁盘存储空间。
        • 这种变化将使 keyword 字段类型、 match_only_text 字段类型以及在较小程度上的 text字段类型受益。
        • 该更新使得转化为 message 字段索引大小(映射为match_only_text)减少了 14.4%,磁盘占用空间总体减少了 3.5%。
      • 加快geo_point,geo_shape和 range 字段索引速度
        • 新版本优化了多维点(multi-dimensional points)的索引速度,多维点是用于 geo_point、geo_shape 和range 字段的内部数据结构。Lucene 级别的基准测试显示,这些字段类型的索引速度提高了 10-15%。主要由这些字段组成的 Elasticsearch 索引和数据流可能会在索引速度方面有显著的改进。
      • PyTorch 模型支持自然语言处理 (NLP)
        • 可以上传在 Elasticsearch 之外训练的 PyTorch 模型,并在摄取时使用它们进行推理。
        • 第三方模型支持为 Elastic Stack 带来了现代自然语言处理 (NLP)和搜索用例,例如:
          • 填充蒙版 Fill-mask
          • 命名实体识别 Named entity recognition (NER)
          • 文本分类 Text classification
          • 文本嵌入 Text embedding
          • 零样本分类 Zero-shot classification
发布日期 版本号 时间间隔
2010-02-08 V0.2
2010-05-14 V0.7 95天
2014-02-14 V1.0 1372 天
2015-10-28 V2.0 621 天
2016-10-26 V5.0 364 天
2017-11-14 V6.0 384 天
2019-04-10 V7.0 512 天
2022-02-11 V8.0 1038 天

三、Elasticsearch 功能

分布式的搜索引擎和数据分析引擎

  • 搜索就是类似于百度,查找各种网页
  • 数据分析就类似于博客统计累计访问量、电商平台的销量前十

 
全文检索、结构化检索、数据分析

  • 全文检索类似于sql中的模糊查询,全文进行搜索
  • 结构化搜索就类似于指定查询,查找到对应的一行

 
对海量数据进行近实时处理

  • 分布式:ES自定可以将海量数据分散到多台服务器上存储和检索
  • 海量数据的处理:分布式以后,就可以采用大量的服务器去存储和检索数据,自然而然就可以实现海量数据的处理了
  • 近实时:检索个数据要花费1小时,(这时就不要近实时,做好进行离线批量处理),在秒级别对数据进行搜索和分析

四、Elasticsearch 特点

  • 可以作为一个大型分布式集群(数百台服务器)技术,处理PB级数据,服务大公司;也可以运行在单机上,服务小公司
  • Elasticsearch不是什么新技术,主要是将全文检索、数据分析以及分布式技术,合并在了一起,才形成了独一无二的ES;lucene(全文检索),商用的数据分析软件(也是有的),分布式数据库(mycat)
  • 对用户而言,是开箱即用的,非常简单,作为中小型的应用,直接3分钟部署一下ES,就可以作为生产环境的系统来使用了,数据量不大,操作不是太复杂
  • 数据库的功能面对很多领域是不够用的(事务,还有各种联机事务型的操作);特殊的功能,比如全文检索,同义词处理,相关度排名,复杂数据分析,海量数据的近实时处理;Elasticsearch作为传统数据库的一个
  • 全文搜索:是指计算机索引程序通过扫描文章中的每一个词,对每一个词建立一个索引,指明该词在文章中出现的次数和位置,当用户查询时,检索程序就根据事先建立的索引进行查找,并将查找的结果反馈给用户的检索方式。

五、Elasticsearch 应用场景

站点搜索、系统搜索、数据分析。。。

  • 维基百科,类似百度百科,牙膏,牙膏的维基百科,全文检索,高亮,搜索推荐
  • The Guardian(国外新闻网站),类似搜狐新闻,用户行为日志(点击,浏览,收藏,评论)+社交网络数据(对某某新闻的相关看法),数据分析,给到每篇新闻文章的作者,让他知道他的文章的公众反馈(好,坏,热门,垃圾,鄙视,崇拜)
  • Stack Overflow(国外的程序异常讨论论坛),IT问题,程序的报错,提交上去,有人会跟你讨论和回答,全文检索,搜索相关问题和答案,程序报错了,就会将报错信息粘贴到里面去,搜索有没有对应的答案
  • GitHub(开源代码管理),搜索上千亿行代码
  • 电商网站,检索商品
  • 日志数据分析,logstash采集日志,ES进行复杂的数据分析(ELK技术,elasticsearch+logstash+kibana)
  • 商品价格监控网站,用户设定某商品的价格阈值,当低于该阈值的时候,发送通知消息给用户,比如说订阅牙膏的监控,如果高露洁牙膏的家庭套装低于50块钱,就通知我,我就去买
  • BI系统,商业智能,Business Intelligence。比如说有个大型商场集团,BI,分析一下某某区域最近3年的用户消费金额的趋势以及用户群体的组成构成,产出相关的数张报表,**区,最近3年,每年消费金额呈现100%的增长,而且用户群体85%是高级白领,开一个新商场。ES执行数据分析和挖掘,Kibana进行数据可视化国内
  • 国内:站内搜索(电商,招聘,门户,等等),IT系统搜索(OA,CRM,ERP,等等),数据分析(ES热门的一个使用场景)

参考:
Elasticsearch 中文社区
Elasticsearch 中文文档
Elasticsearch: 权威指南
Elasticsearch-PHP
Elasticsearch 请求示例
Elasticsearch的术语原理概念及应用场景(一)
Elasticsearch基础1——搜索引擎发展史和工作流程、es/es-head/kibana的基础安装文章来源地址https://www.toymoban.com/news/detail-427719.html

到了这里,关于ElasticSearch 基础(一)之发展史的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • [后端基础] 文件上传的发展史

    【本文首发于微信公众号: [程序员三木]】 欢迎关注我们的微信公众号,获取更多有关Java和Spring的技术文章和教程。 在ajax请求出来之前,人们都是直接通过form表单提交文件,或者form配合iframe(已废弃)进行文件上传,form配合input进行文件选择。 那么为了了解清楚他们的工

    2024年02月01日
    浏览(34)
  • 网络基础——网络的由来与发展史

    作者: Insist-- 个人主页: insist--个人主页 作者会持续更新网络知识和python基础知识,期待你的关注 目录 一、网络的由来 二、计算机网络的发展史

    2024年02月13日
    浏览(33)
  • Docker从认识到实践再到底层原理(二-1)|容器技术发展史+虚拟化容器概念和简介

    那么这里博主先安利一些干货满满的专栏了! 首先是博主的高质量博客的汇总,这个专栏里面的博客,都是博主最最用心写的一部分,干货满满,希望对大家有帮助。 高质量博客汇总 然后就是博主最近最花时间的一个专栏《Docker从认识到实践再到底层原理》希望大家多多关

    2024年02月09日
    浏览(39)
  • 【发展史】鼠标的发展史

    最早可以追溯到1952年,皇家加拿大海军将5针保龄球放在能够侦测球面转动的硬件上,这个硬件再将信息转化成光标在屏幕上移动,用作军事计算机输入。这是我们能够追溯到的最早的依靠手部运动进行光标移动的输入设备。但当时这个东西不叫鼠标,而且看上去也不像mous

    2024年02月08日
    浏览(39)
  • Unity发展史

    Unity历史 2004年诞生于丹麦阿莫斯特 2005年06月:Unity 1.0发布 2006年06月:Unity 1.5发布 2007年10月:Unity 2.0发布,增加地形引擎、实时动态阴影,支持DirectX 9,并具有内置的网络多人联机功能。 2008年06月:Unity 支持Will 2008年10月:Unity 支持iphone 2009年03月:Unity 2.5发布,增加对w、

    2024年02月16日
    浏览(45)
  • 细说元宇宙发展史

    元宇宙作为时下一个热门的产业,凭借着强大的潜力,吸引了全球范围内大量企业的参与。但事实上,元宇宙这一概念,并非是一个全新的名词,它早在数十年前就已经出现在我们的视野当中,那么,就让我们来探索元宇宙的这一段发展时吧,进一步深度了解什么是元宇宙。

    2023年04月10日
    浏览(42)
  • 大数据技术发展史

    大数据(Big Data)是指在传统数据处理方法难以处理的情况下,需要新的处理模式来具有更强的决策力、洞察发现力和过程优化能力的海量、高增长率和多样化的信息资产。大数据的特征通常被概括为“4V”,即: Volume(容量) :大数据的规模非常庞大,通常以 TB(太字节)

    2024年01月19日
    浏览(48)
  • C++发展史

    目录 什么是C++ C++的发展史 C++的重要性 C++在实际工作中的应用 “21天教你学会C++” 先看看祖师爷,记得多拜拜🤭 C语言是结构化和模块化的语言,适合处理较小规模的程序。对于复杂的问题,规模较大的 程序,需要高度的抽象和建模时,C语言则不合适。为了解决软件危机,

    2024年01月18日
    浏览(50)
  • Windows系统发展史

    1.Windows1.0是由微软在1983年11月宣布,并在两年后(1985年11月)发行的。严格来说,这并不是微软的首个操作系统,毕竟早在1981年,微软就发布了微软操作系统中的里程碑--MS-DOS(MicroSoft Disk Operating System)。与当时的主流操作系统MS-DOS相比,Windows 1革命性地将GUI(图形操作界面)引入到

    2024年02月07日
    浏览(44)
  • Linux发展史

     1、Linux前身-Unix诞生 1965年,贝尔实验室Bell、麻省理工学院MIT、奇异公司GE,发起了Multics计划,让主机可以达成300个终端。后来因为资金不足、计划进度等问题,退出了研究。贝尔研究室退出了Multics计划。1968年Multics 项目到后期由于开发进度不是很好,MIT 和Bell实验室相继离

    2024年02月05日
    浏览(53)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包