Elasticsearch 介绍
概念:Elasticsearch是一个高度可伸缩的开源全文搜索和分析引擎。它允许您快速和接近实时地存储、搜索和分析大量数据;Elasticsearch 是一个分布式可扩展的实时搜索和分析引擎,一个建立在全文搜索引擎 Apache Lucene(TM) 基础上的搜索引擎,当然 Elasticsearch 并不仅仅是 Lucene 那么简单,它不仅包括了全文搜索功能,还可以进行以下工作:分布式实时文件存储,并将每一个字段都编入索引,使其可以被搜索;实时分析的分布式搜索引擎;可以扩展到上百台服务器,处理PB级别的结构化或非结构化数据。
特性:
- 查询 : Elasticsearch 允许执行和合并多种类型的搜索 — 结构化、非结构化、地理位置、度量指标 — 搜索方式随心而变。
- 分析 : 找到与查询最匹配的十个文档是一回事。但是如果面对的是十亿行日志,又该如何解读呢?Elasticsearch 聚合让您能够从大处着眼,探索数据的趋势和模式。
- 速度 : Elasticsearch 很快。真的很快。
- 可扩展性 : 可以在笔记本电脑上运行。 也可以在承载了 PB 级数据的成百上千台服务器上运行。
- 弹性 : Elasticsearch 运行在一个分布式的环境中,从设计之初就考虑到了这一点。
- 灵活性 : 具备多个案例场景。数字、文本、地理位置、结构化、非结构化。所有的数据类型都欢迎。
- HADOOP & SPARK : Elasticsearch + Hadoop
Elasticsearch 由来及历史
- 2010年2月8日, Shay Banon 发表了一篇博客,说他基于Lucene开发了一个分布式搜索引擎,实现了一些功能...
- 0.7.0:2010年5月14日发布,第一个可以查询到发版信息的版本,重要特性:
- Zen Discovery 自动发现模块
- Groovy Client支持
- 简单的插件管理机制
- 更好支持ICU分词器
- 更多的管理API
- 1.0.0:2014年2月14日发布,重要特性:
- Snapshot/Restore API 备份恢复API
- 支持聚合分析Aggregations
- CAT API 支持
- 支持联和查询
- 断路器支持
- Doc values 引入
- 2.0.0:2015年10月28日发布,重要特性:
- 增加了 pipleline Aggregations
- query/filter 查询合并,都合并到query中,根据不同的上下文执行不同的查询
- 存储压缩可配置
- Rivers 模块被移除
- Multicast 组播发现被移除,成为一个插件,生产环境必须配置单播地址
- 5.0.0: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.0: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.0:2019年4月10日发布,重要特性:
- 引入了真正的内存断路器,它可以更精准地检测出无法处理的请求,并防止它们使单个节点不稳定
- Zen2 是 Elasticsearch 的全新集群协调层,提高了可靠性、性能和用户体验,变得更快、更安全,并更易于使用
- 查询优化:更快的前 k 个查询、间隔查询、Function score 2.0
- 待续...
Elasticsearch 最新版说明
Elasticsearch 7.8.0 已发布,主要更新内容如下:
新特性
Aggregations
- 支持 Student 的 t-test 聚合 #54469 (issue: #53692)
- 为 t-test 聚合增加对过滤器的支持 #54980 (issue: #53692)
- 直方图字段类型支持 Sum 聚合 #55681 (issue: #53285)
- 直方图字段类型支持 ValueCount 和 Avg 的聚合 #55933 (issue: #53285)
Features/Indices APIs
- 新增模拟的可组合模板 API _index_template/_simulate_index/{name} #55686 (issue: #53101)
Geo
- 为 geo_shape 添加 geo_bounds 聚合支持 #55328
- 为 geotile_grid 和 geohash_grid 添加 geo_shape 支持 #55966
- 为 geo_centroid 聚合添加 geo_shape 支持 #55602
- 添加新的 point field #53804
SQL
- 实现 DATETIME_FORMAT 函数用于格式化 date/time #54832 (issue: #53714)
- 实现 DATETIME_PARSE 函数用于解析字符串 #54960 (issue: #53714)
- 在 aggs 内部实现脚本 #55241 (issues: #29980, #36865, #37271)
Breaking changes
Aggregations
- 优化value_count聚合 #54854
Features/Indices APIs
- 添加自动创建操作 #55858
Mapping
- 禁止更改 root mapper 上的 enabled 状态 #54463 (issue: #33933)
- 修复更新嵌套字段的 include_in_parent/include_in_root of #54386 (issue: #53792)
详情查看:https://www.elastic.co/guide/en/elasticsearch/reference/7.8/release-notes-7.8.0.html
下载地址:https://www.elastic.co/cn/downloads/elasticsearch