暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

什么是Elasticsearch?为什么使用它?

原创 eternity 2022-07-25
456

管理大数据可能非常繁重,压力很大,尤其是当您的组织需要速度、可靠性、可扩展性和高可用性时。传统的传统数据库无法提供提供分析报告所需的速度,尤其是在运行大型数据聚合时。现有的数据库可能能够提供这一点,但无论您如何进行最佳设置和配置,速度往往很差或表现不佳。

拥有大量数据的大型组织经历了艰难时期和繁重的工作,尤其是在即兴分析方面,可能需要实时结果,尤其是在实时检索或搜索数据期间。许多组织可能会尝试结合各种现有技术从头开始开发一些东西,以提供大数据存储、分析和其他相关服务,从而使应用程序达到其标准。

问题是这不是一件简单的事。困境在于需要大量的研发、财务成本和时间来完成并满足交付时间、速度和灵活性需求。

处理打算用于机器学习、人工智能、物联网、地理空间处理、电信、军事和武器系统以及医疗系统应用程序的搜索或分析的大数据需要速度、实时处理、可扩展性和性能。

事实上,你已经听说过一些用于大数据的应用程序,比如Apache Hadoop和Apache Spark,还有Elasticsearch。Hadoop和Spark非常适合大型事务,尤其是批量插入或流水线。相反,Elasticsearch提供了真正的搜索引擎功能,具有最佳的实时和时间序列数据检索性能

在这篇文章中,我们将概述Elasticsearch的基础知识,以及您应该在何时以及为什么使用它。

Elasticsearch简史

Elasticsearch由软件工程师Shay Banon创建,他着手为他妻子不断增加的食谱列表构建一个可扩展的搜索解决方案。他构建了“一个从组构建到分发的解决方案”,并使用了一个公共接口,即HTTP上的JSON,适用于Java以外的编程语言。

他的第一次迭代被称为指南针。第二个是Elasticsearch(Apache Lucene在幕后)。

Shay Banon于2010年2月发布了Elasticsearch的第一个版本。截至本文撰写之时,Elasticsearch已按以下顺序发布了六个主要版本:

  • 1.0.0–2014年2月12日

  • 2.0.0–2015年10月28日

  • 5.0.0–2016年10月26日

  • 6.0.0–2017年11月14日

  • 7.0.0–2019年4月10日

  • 8.0.0–2022年2月10日

反应令人印象深刻,用户自然接受。随着高采用率,一个社区开始形成,他们与史蒂文·舒尔曼、乌里·博内斯和西蒙·威尔诺尔一起成立了一家搜索公司。

什么是Elasticsearch?

Elasticsearch因ELK堆栈的技术部分而闻名,更广为人知的是Elasticsearch、Logstash、Kibana和Beats(在Beats于2018年左右推出之前,Elasticsearch的前身是Elastic、Logstash和Kibana)

下图显示了ELK堆栈的工作原理,并演示了Elasticsearch的用途以及它作为堆栈的一部分是如何工作的。

Elasticsearch是一个分布式、免费、开放的搜索和分析引擎,适用于所有类型的数据,包括文本、数字、地理空间、结构化和非结构化数据。Elasticsearch建立在Apache Lucene上,于2010年由Elasticsearch N.V.(现在称为Elastic)首次发布。Elasticsearch主要以其简单的RESTAPI、分布式特性、速度和可扩展性而闻名,如上图所示,它是弹性堆栈的核心组件。ELK stack是一套自由开放的工具,用于数据摄取、丰富、存储、分析和可视化。

那么Elasticsearch到底是什么?

通过添加Beats(用于向Elasticsearch发送数据的轻量级货运代理),ELK堆栈目前由Elasticsearch、Kibana、Beats和Logstash组成。

Elasticsearch是可扩展的,提供了许多聚合,并且有一个很棒的可视化工具,即Kibana。它提供了一些功能来帮助您存储、管理和搜索时间序列数据,例如日志和指标。进入Elasticsearch后,您可以使用Kibana和其他弹性堆栈功能分析和可视化数据

Elasticsearch通常用作底层搜索引擎,为具有简单/复杂搜索功能和需求的应用程序提供支持。功能包括:

  • 能够快速、近实时地索引、存储、搜索和分析大量数据。

  • 结构化、非结构化、数值或地理空间数据的实时搜索和分析。

  • 以支持快速搜索的方式高效地存储和索引数据。

  • Elasticsearch使用OpenJDK,因此与Java的Oracle版本相比可能存在一些性能差异。

Elasticsearch已经存在了一段时间,被大型组织使用,如欧洲核子研究所、脸书、沃尔玛、Adobe、美国空军、Shopify、优步、辉瑞、Vimeo、eBay、Godaddy等。

Elasticsearch许可

你可能会问这样一个问题:“Elasticsearch免费吗?”Elasticsearch是在Apache许可证2.0下作为开源软件发布的。然而,去年2021 1月,他们决定更改为弹性许可证2.0和SSPL 1.0。具体来说,后者与主流数据库软件技术类似,如MongoDB、CockroachDB、RedisLabs、TimescaleDB、Graylog等。这意味着它是从纯开放源码软件中推出的,但它仍然是免费的,但使用受到限制,以避免滥用。Elasticsearch有一个很好的常见问题解答资源,可以解答有关许可证的任何问题。

使用Elasticsearch

Elasticsearch是一个分布式和面向文档的数据库。它将复杂的数据结构存储到序列化的JSON文档中。您可以简单地将其与其他NoSQL数据库进行比较,这些数据库在存储数据时使用文档或集合内的文档,而不是使用关系数据库的表、列和行的传统模式结构。

使用Elasticsearch时,建议在存储数据映射之前以最佳方式设计数据映射。说到优化,它的目的是为了搜索和检索。这是因为Elasticsearch不像其他支持约束(如外键)的RDBMS数据库那样工作,Elasticsearch的设计也不同于RDBMS,后者支持与其他表的重连接。因此,将要存储在Elasticsearch中的数据或文档必须非规范化。非规范化提高了检索性能,因为查询连接是不必要的。缺点是它使用了更多的空间,因为东西必须存储多次,因此很难保持最新,因为任何更改都必须应用于所有实例。然而,这种方法非常适合于一次写入一次读取的多个工作负载,Elasticsearch最适合这种工作负载。Elasticsearch旨在以优化搜索和检索的方式进行映射和存储文档。

设计数据意味着将其格式化为符合您需求的模板。这意味着您必须考虑动态映射,或者在将数据存储或添加到Elasticsearch时必须手动映射数据。

当存储文档时,它会被编入索引并在一秒钟内几乎实时地完全搜索。Elasticsearch使用一种称为反向索引的数据结构,支持快速全文搜索。倒排索引列出任何文档中出现的每个唯一单词,并标识每个单词出现在其中的所有文档。

当集群中有多个Elasticsearch节点时,存储的文档分布在集群中,可以从任何节点立即访问。

Elasticsearch不像典型的数据库

大多数关系数据库还允许您指定约束来定义什么是一致的,什么是不一致的。例如,您可以强制执行引用完整性和唯一性,要求帐户移动的总和为正,等等。面向文档的数据库往往不会这样做,Elasticsearch也不例外。

Elasticsearch不像传统的RDBMS,甚至不像使用撤消/重做日志生成ACID事务的NoSQL数据库。Elasticsearch没有这些类型的约定或概念。它甚至没有诸如外键或唯一键之类的锁定机制,因为它不具备ACID遵从机制。尽管它支持锁以避免争用,但这并不像您预期的那样由Elasticsearch自动管理或处理。不过,Elasticsearch提供了一些处理乐观锁定的能力。这可以确保较旧的文档版本不会覆盖较新的版本。在文档上执行的每个操作都由协调该更改的主碎片分配一个序列号。

这种设计与Elasticsearch以惊人的速度交付结果的能力产生共鸣。不需要处理文档数据的复杂结构,也不需要重构无组织的数据并构建树状结构来链接文档的必要定义。这有助于提高Elasticsearch的速度,以非常快的速度执行。

Elasticsearch用例

Elasticsearch可以为大数据提供近实时功能,对实时视频馈送的需求很高,可以访问视线数据,并使用即时聊天工具。在某些情况下,数据需要在世界各地传输,在许多情况下会导致事物变得像素化。然而,Elasticsearch通过更多地依赖本地资产来解决这个问题。

Elasticsearch非常适合存储非结构化数据,然后在需要时通过其基于Apache Lucene的搜索引擎功能以极快的速度检索数据。通过这种方式,Elasticsearch非常适合这些类型的系统:

  • 商业数据分析

  • 安全和欺诈检测

  • 地理空间应用

  • 网络安全

  • 军事行动

  • 公共安全和应急响应

  • 后勤

  • 分析科学数据

  • 数字加密货币

  • 机器学习/人工智能

  • 物联网

许多系统和应用程序可以从Elasticsearch和ELK堆栈中受益。

Elasticsearch最适合用于:

  • 日志记录和日志分析

  • 收集和合并公共数据

  • 全文搜索(适用于欺诈检测/安全、电子商务搜索、企业搜索等)

  • 事件数据和指标

  • 可视化数据

  • 系统可观测性

  • 安全(威胁搜寻和预防)

Elasticsearch作为您的主要数据存储

像其他RDBMS或NoSQL数据库一样,使用Elasticsearch作为主数据库是一个好主意吗?一般来说,不建议这样做。某些操作(如索引(插入值))的执行成本高于其他数据库。

Elasticsearch不具备ACID事务,也不像传统的RDBMS那样具有用于引用完整性的锁定机制。

话虽如此,如果您将Elasticsearch用作搜索引擎工具,以提供从持久数据存储中获取的数据结果,那么Elasticsearch是最好的选择,无论它是来自RDBMS还是NoSQL数据库作为您的主数据库。如果您正在处理需要实时处理的大容量插入或流水线的大量数据,Elasticsearch并不是最好的处理方法,但您可以对其进行配置和微调。如果您喜欢大容量插入或流水线,需要大量数据,可以使用Apache Hadoop或Apache Spark。然后,您可以将数据输入Elasticsearch,以达到需要最佳速度的检索或分析目的。当然,这意味着额外的成本,因为您必须推出数据硬件/虚拟机作为服务器,或者拥有一个数据湖来满足您的需求。

Elasticsearch具有可扩展性和高可用性

对于Elasticsearch和大量数据的生产使用,最好将其设置为集群。设置群集至少需要三个节点。Elasticsearch提供了基于仲裁的决策,总结了导致仲裁在Elasticsearch集群中进行的三(3)个节点(即总大小的一半+1)的原因。

默认情况下,Elasticsearch将数据存储在至少一个主碎片和一个副本碎片上。因此,如果您的集群节点停机,至少您的数据在另一个节点上仍然可以检索,并且不会丢失。

在可扩展性方面,将节点添加到现有集群非常容易。一旦建立了一个新节点,您可以让它加入现有集群,Elasticsearch将自动分配新的碎片,因此您的数据将需要扩展。

Elasticsearch的备份

Elasticsearch的备份功能不如标准备份丰富。Elasticsearch仅支持快照和恢复作为可靠的备份方法。

Elasticsearch的安装和设置配置提示

如果您是第一次使用Elasticsearch,或者不知道如何使用Elasticsearch,那么设置和安装可能会非常棘手。默认情况下,由于最新版本的发布,特别是截至本文撰写之时的8.1.x版本,TLS/SSL已经启用。您可能会发现设置它非常具有挑战性,尤其是在手动设置步骤中。

在我们的下一篇博客中,我们将引导您完成Elasticsearch的安装和配置设置,并构建一个适合您的环境的集群。因此,请继续关注并订阅我们的时事通讯以获取最新消息。

结束

Elasticsearch是ELK stack(Elasticsearch、Logstash、Beats、Kibana)中非常强大的一部分。它是一个搜索引擎平台,非常适合管理和存储需要近实时处理以用于检索或分析目的的大量数据。它可以将搜索和分析引入任何数据类型,从Elasticsearch发送和检索数据只需几秒钟。

Elasticsearch还具有高可扩展性,提供高可用性,并可以通过快照和恢复提供备份。这是一个非常丰富的API,允许您微调数据和索引以最适合您的需要。Elasticsearch被大型组织使用,并被证明可以为组织提供业务关键型数据。

通过改进从分析中收集的见解、预测趋势、提高安全稳定性、为物流聚集大量数据、为机器学习和人工智能系统进行数据挖掘等,它是商业成功的完美伴侣。使用外部插件和工具,Elasticsearch可以更灵活、适应性更强地作为数据湖的一部分来管理组织内部的大量数据。

ClusterControl 1.9.3增加了对Elasticsearch的支持,使用户无需使用Elastic云或移动到OpenSearch即可实现全生命周期自动化。如果您当前正在使用Elasticsearch,并且想知道为什么ClusterControl提供了一种更好的方法来管理您的数据库操作,请参阅本文,这是Elasticsearch操作自动化的ElasticCloud的真正替代品。我们将推出更多关于Elasticsearch最佳实践的内容,请关注LinkedIn和Twitter上的我们,并订阅我们的时事通讯。

原文标题:What is Elasticsearch and why use it?
原文作者:Paul Namuag
原文链接:https://severalnines.com/database-blog/what-elasticsearch-and-why-use-it

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论