Elasticsearch 8开启新时代,特性与应用场景一览
Posted ElasticExpert
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch 8开启新时代,特性与应用场景一览相关的知识,希望对你有一定的参考价值。
Elastic官方宣布Elasticsearch进入Version 8,在速度、扩展、高相关性和简单性方面开启了一个全新的时代。截止5月份已更新发布到了8.2.2版本,新的版本有哪些大的变化,对历史版本会有什么影响?让我们一起探索Elasticsearch的全新特性和应用场景。
01、Elasticseach行业地位
02、Elasticsearch的特性
- 实时
理论上数据从写入Elasticsearch到数据可以被搜索只需要1秒左右的时间,实现准实时的数据索引和查询。 - 分布式、可扩展
天生的分布式的设计,数据分片对于应用层透明,扩展性良好,可以轻易的进行节点扩容,支持上百甚至上千的服务器节点,支持PB级别的数据存储和搜索。 - 稳定可靠
Elasticsearch的分布式、数据冗余特性提供更加可靠的运行机制,且经过大型互联网公司众多项目使用,可靠性得到验证。 - 高可用
数据多副本、多节点存储,单节点的故障不影响集群的使用。 - Rest API
Elasticsearch提供标准的Rest API,这使得所有支持Rest API的语言都能够轻易的使用Elasticsearch,具备多语言通用的支持特性,易于使用。Elasticsearch Version 8以后,去除了以前Transport API、High-Level API、Low-Level API,统一标准的Rest API,这将使得Elasticsearch更加容易使用,原来被诟病的API混乱问题终于得到完美解决。 - 高性能
Elasticsearch底层构建基于Lucene,具备强大的搜索能力,即便是PB级别的数据依然能够实现秒级的搜索。 - 多客户端支持
支持Java、Python、Go、php、Ruby等多语言客户端,还支持JDBC、ODBC等客户端。 - 安全支持
提供单点登录SSO、加密通信、集群角色、属性的访问控制,支持审计等功能,在安全层面上还支持集成第三方的安全组件,在Version 8以后,默认开启了HTTPS,大大简化了安全上的配置。 - 直接支持NLP
Elasticsearch支持NLP,可以实现情感分析、文本分类等功能,在Version 8之前,需要额外的外部组件,而在Version 8,可以直接在Elasticsearch中使用这些功能,无需额外的组件。 - 原生矢量搜索支持
Elastic 8.0 版引入了一整套原生矢量搜索功能,增加了对近似最近邻 (ANN) 搜索的原生支持,可以快速且大规模地比较基于矢量的查询与基于矢量的文档语料库。
03、Elasticsearch应用场景
- 搭建日志系统
日志系统应该是Elasticsearch使用最广泛的场景之一了,Elasticsearch支持海量数据的存储和查询,特别适合日志搜索场景。广泛使用的ELK套件(Elasticsearch、Logstash、Kibana)是日志系统最经典的案例,使用Logstash和Beats组件进行日志收集,Elasticsearch存储和查询应用日志,Kibana提供日志的可视化搜索界面。
- 搭建数据分析系统
Elasitcsearch支持数据分析,例如强大的数据聚合功能,通过搭配Kibana,提供诸如直方图、统计分组、范围聚合等方便使用的功能,能够快速实现一些数据报表等功能。
在数字化转型的大行其道的当下,需要从海量数据中发现数据的规律,从而做出一定的决策,Elasticsearch一定是最适合的解决方案之一。
- 搭建搜索系统
Elasticsearch为搜索而生,用于搭建全文搜索系统是自然而然的事情,它能够提供快速的索引和搜索功能,还有相关的评分功能、分词插件等,支持丰富的搜索特性,可以用于搭建大型的搜索引擎,更加常用语实现站内搜索,例如银行App、购物App等站内商品、服务搜索。 - 构建海量数据业务系统即席查询服务
目前大量的需要支持事务的系统使用mysql作为数据库,但随着业务的开展,数据量会越来越大,而MySQL的性能会越来越差,虽然可以通过分库分表的方案进行解决,但是操作比较复杂,而且往往每隔一段时间就需要进行扩展,且代码需要配合修改。
这种情况下可以将数据从MySQL同步到Elasticsearch,针对实时性要求不太高或者主要查询历史数据且数据量比较大的场景使用Elasticsearch提供查询,而对需要事务实时控制的即时数据还是通过MySQL存储和查询。
- 作为HBase的二级索引
HBase是一个优秀的开源非关系数据库,支持海量数据的存储和查询,但HBase 只有 rowkey 这个一级索引的特性,而有时候我们需要针对保存在HBase中的数据的个别字段进行查询,这对于HBase来说是无法很好支持的,一般情况下需要额外创建二级索引,而Elasticsearch海量数据搜索且近实时的特性无疑是最合适的方案之一。
可以将HBase的部分数据到Elasticsearch,查询时先通过查询Elasticsearch获取到对应HBase数据记录中的rowkey,再通过rowkey到HBase中查询到完整数据。这种应用场景下,实际上是将Elasticsearch优秀的全文搜索的性能与其他组件的优秀特性结合起来,例如HBase海量数据存储的特性。
每个组件都有自己独有的特性,没有完全一站式搞定所有功能的组件存在,利用好组件的各个特性,结合使用,才是使用开源组件的正确姿势。
- 作为独立数据库系统
Elasticsearch本身提供了数据持久化存储的能力,并且提供了增删改查的功能,在某些应用场景下可以直接当做数据库系统来使用,既提供了存储能力,又能够同时具备搜索能力,整体技术架构会比较简单,例如博客系统、评论系统。需要注意的是,Elasticsearch不支持事务,且写入的性能相对关系型数据库稍弱,所有需要使用事务的场景都不能将Elasticsearch当做唯一的数据库系统,这使得这种使用场景很少见。
Elasticsearch围绕速度、扩展性、高相关性和简单性方面还在不断迭代更新,在众多的开源组件中其更新速度一直排在前列,期待更多的优化新功能的出现。
以上是关于Elasticsearch 8开启新时代,特性与应用场景一览的主要内容,如果未能解决你的问题,请参考以下文章