什么是弹性搜索?

弹性搜索 (Elasticsearch) 是一种搜索和数据分析引擎,具有分布式和 RESTful 风格,能够为用户提供在短时间内实现大规模数据的存储、分析和搜索的服务,并且能够解决各种用例。弹性搜索为用户提供了丰富的 API 与插件,支持与多种编程语言和工具集成,具有高度的可扩展性、高可用性和易用性。

弹性搜索的工作原理

弹性搜索(Elasticsearch)是一个分布式搜索和分析引擎,建立在 Apache Lucene 之上。它通过索引数据并使其可搜索来工作。弹性搜索采用分布式架构,将数据分割成分片并跨多个节点复制,从而提供高可用性和可扩展性。它使用 RESTful API 进行通信,允许用户轻松与系统交互并执行各种搜索和分析操作。弹性搜索还提供近实时搜索、聚合和高级查询功能等特性,使其成为广泛应用场景(如日志分析、全文搜索、安全情报、业务分析和运营智能)的强大工具。

弹性搜索的工作原理

弹性搜索的优缺点

弹性搜索是一种流行的开源分布式搜索和分析引擎,具有以下优势:

弹性搜索优势

  • 高兼容性:弹性搜索支持跨平台运行,可在不同操作系统和硬件环境下使用,提高了灵活性和可移植性。
  • 实时搜索:作为实时搜索引擎,弹性搜索在文档添加到索引后立即可被搜索到,满足了实时数据检索的需求。
  • 易于扩展:弹性搜索采用分布式架构设计,可以轻松地在大型组织中进行水平扩展,满足大规模数据处理需求。
  • 多租户支持:弹性搜索支持多租户模式,可为不同的用户或应用程序提供隔离的索引和搜索环境。
  • 多语言支持:弹性搜索内置了对多种语言的分析和处理能力,支持全球化的搜索需求。
  • 免费开源:弹性搜索是一款免费开源软件,降低了使用成本,同时拥有活跃的社区支持。

弹性搜索缺点

  • 脑裂问题:在某些情况下,弹性搜索集群可能会出现"脑裂"现象,导致数据不一致。
  • 数据丢失风险:在进行大规模数据传输时,如果未正确配置,可能导致数据丢失。
  • 学习曲线陡峭:弹性搜索功能强大,但同时也增加了学习和使用的复杂性。

亚马逊云科技中国峰会

6 月 19 日 - 20 日|上海世博中心

聚焦生成式 AI 从技术爆发迈向行业深耕的跨越

如何搭建和管理弹性搜索集群

对于大多数企业来说,利用托管的弹性搜索服务是最简单、最高效的搭建和管理弹性搜索集群的方式。主要的托管服务提供商包括 Elastic Cloud、Amazon OpenSearch Service 等。这些服务提供了一站式的部署、配置、扩展、备份和安全管理功能,无需用户自行管理底层基础设施。

对于一些有特殊需求的企业,也可以自行部署弹性搜索集群。这需要用户具备相关的专业知识,能够正确配置集群环境、网络安全、数据备份等。自行部署的好处是可以根据需求进行深度定制,但同时也需要承担更多的运维成本。

无论采用托管服务还是自行部署,用户都可以使用 Elasticsearch 提供的 API 将数据导入集群。常用的数据接入工具包括 Logstash、Kinesis Data Firehose 等。数据导入后可以使用 Kibana 等可视化工具对数据进行分析和构建仪表板。

弹性搜索集群天生支持横向扩展,可以根据数据量和查询负载动态调整集群规模。同时还需要对集群配置、索引设计、查询优化等方面进行持续的优化,以确保整体性能满足业务需求。

弹性搜索的性能优化技巧

监控性能指标

为了优化弹性搜索的性能,首先需要监控其关键性能指标,如 CPU 使用率、内存使用情况和磁盘 I/O,以识别任何可能的性能瓶颈。通过持续监控这些指标,可以及时发现并解决潜在的性能问题。

监控性能指标

优化索引和分片策略

合理的索引和分片策略对于提高弹性搜索的查询性能至关重要。索引过程需要平衡写入性能和查询性能,而分片则可以将数据分散到多个节点,实现并行处理,从而提高查询效率。因此,根据具体的数据量和查询模式,制定合适的索引和分片策略是性能优化的关键一环。

优化索引和分片策略

利用内置网关功能

弹性搜索内置了网关功能,可以有效地实现数据恢复和复制。通过将索引数据持久化存储在网关,弹性搜索集群可以在重启后快速恢复数据,避免了完全重建索引所带来的性能损失。同时,网关还支持跨集群复制数据,提高了数据的可用性和容错能力。

利用内置网关功能

实施安全措施

实施适当的安全措施也有助于提升弹性搜索的整体性能和可靠性。访问控制和数据加密等安全机制可以防止未经授权的访问,保护数据的完整性和隐私性。此外,合理的安全策略还可以减轻弹性搜索集群的负载,从而提高其响应速度和吞吐量。

实施安全措施

弹性搜索的安全和权限管理

弹性搜索为确保数据安全性和访问控制,提供了多种安全功能。自 2019 年 5 月起,弹性搜索免费开放了核心安全特性,包括 TLS 加密通信、文件和本地域用于创建和管理用户,以及基于角色的访问控制,用于控制用户对集群 API 和索引的访问权限。这些安全功能的源代码在"弹性许可证"下开源。

对于弹性搜索的托管服务,弹性云服务允许用户与合作伙伴一起创建安全部署。此外,还有许多公司为弹性搜索提供托管服务,包括主机、部署、备份和其他支持,通常也支持 Kibana。这些托管服务有助于简化弹性搜索的安全管理。

随着时间推移,弹性搜索在安全性方面不断演进。2021 年 1 月,Elastic NV 宣布将弹性搜索和 Kibana 的许可从开源 Apache 许可证转为弹性许可证和 SSPL,以限制开源许可证赋予用户的自由度,这一变化旨在加强对弹性搜索的控制。

弹性搜索的应用场景

日志分析

Elasticsearch 是一种开源的分布式搜索和分析引擎,它可以快速高效地处理大量的日志数据。每天 Elasticsearch 能够处理几十甚至几百TB的日志数据,支持建立实时的、细粒度的搜索和分析功能。这使得企业能够快速定位问题根源并优化系统性能。 Elasticsearch 的日志分析能力源于其分布式架构和高度优化的搜索引擎。它能够水平扩展以处理大量数据,并提供近乎实时的搜索响应。 通过 Elasticsearch 的聚合和分析功能,企业可以从海量日志数据中提取有价值的见解,例如识别趋势、检测异常、分析用户行为等。 Elasticsearch 支持各种查询语言(如 Lucene 查询语法和 SQL),使日志分析变得简单高效。它还提供了强大的可视化工具 Kibana,帮助用户轻松探索和呈现数据。

 日志分析

大数据

在大数据场景中,Elasticsearch 得到了广泛应用,为大数据系统提供了便捷的对外查询服务。在典型的大数据架构中,数据会被定期计算和处理,然后批量写入 Elasticsearch 引擎,以供查询和分析使用。 Elasticsearch 与 Hadoop、Spark 等大数据框架无缝集成,可作为大数据系统的查询层,提供高效的全文搜索和分析能力。 通过将计算结果存储在 Elasticsearch 中,用户可以快速查询和探索海量数据,而无需重新计算。这极大地提高了大数据系统的响应能力。 Elasticsearch 的分布式特性使其能够轻松扩展以存储和查询 PB 级别的数据,满足大数据场景对存储和查询性能的苛刻要求。 除了支持全文搜索,Elasticsearch 还提供了数据聚合、关联分析等高级分析功能,帮助用户从大数据中发现有价值的见解。

 大数据

弹性搜索和传统数据库的区别

弹性搜索 (Elasticsearch) 和传统数据库的区别,弹性搜索和传统数据库在数据存储、处理和查询方式上存在显著差异:

传统数据库采用关系型数据模型,将数据存储在表中,每个表由行和列组成。数据之间存在着严格的关系约束。 弹性搜索采用文档型数据模型,将数据存储为 JSON 格式的文档。每个文档都是一个独立的数据单元,可以存储非结构化和半结构化数据,数据之间没有严格的关系约束。

传统数据库使用 SQL 语言进行数据查询,查询语句需要严格遵守 SQL 语法规则。 弹性搜索使用 JSON 格式的查询语句,查询语句更加灵活,可以进行全文搜索、模糊搜索等高级查询操作。

传统数据库通常采用垂直扩展方式,即增加单机的硬件资源。扩展能力有限。 弹性搜索支持分布式部署和水平扩展,可以通过增加节点数量来处理海量数据,具有更强的可扩展性。

传统数据库更适合存储结构化数据,如交易记录、用户信息等。 弹性搜索更适合存储非结构化和半结构化数据,如日志数据、文本数据等。

欢迎加入亚马逊云科技培训中心

从 0 到 1 轻松上手云服务,获取更多官方开发资源及培训教程

快速上手训练营

第一课:亚马逊云科技简介

本课程帮助您初步了解云平台与本地环境的差异,以及亚马逊云科技平台的基础设施和部分核心服务,包括亚马逊云科技平台上的弹性高可用架构,架构设计准则和本地架构迁移上云的基本知识。

亚马逊云科技技术讲师:李锦鸿

第二课:存储与数据库服务

您将在本课程中学习到亚马逊云科技上的三个存储服务分别是什么。我们也将在这个模块中为您介绍亚马逊云科技上的关系型数据库服务 Amazon Relational Database Service (RDS)。

亚马逊云科技资深技术讲师:周一川

第三课:安全、身份和访问管理

在这个模块,您将学习到保护您在亚马逊云科技上构建的应用的安全相关知识,责任共担模型以及身份和访问管理服务, Identity and Access Management (IAM) 。同时,通过讲师演示,您将学会如何授权给 EC2 实例,允许其访问 S3 上的资源。

亚马逊云科技技术讲师:马仲凯

了解更多入门学习计划 »

快速上手训练营

账单设置与查看

账单设置与查看

动手实操

快速上手云上无服务器化的 MySQL 数据库

本教程将引导您创建一个Aurora Serverless 数据库并且连接上它。

部署时间:10 分钟

启动一台基于 Graviton2 的 EC2 实例

本教程将为您讲解如何在云控制台上启动一台基于 Graviton2 的 EC2 实例。

部署时间:5 分钟

使用 Amazon Systems Manager 进行云资源统一跟踪和管理

在这个快速上手教程中,您将学会如何使用 Amazon Systems Manager 在 Amazon EC2 实例上远程运行命令。

部署时间:10 分钟

查看更多教程 »

动手实操

快速注册账号 享用免费套餐

跟随注册步骤详解,三分钟快速创建账号,领取免费权益

打开中国区账号注册页面

01 填写您 注册账号的邮箱,点击“继续”

02 查看您的 注册账号邮箱

注: 发件箱 no-reply@register.signin.amazonaws.com.cn

03 输入 邮箱中收到的验证码,点击“继续”

注: 该链接中的内容显示语言是与您的网页浏览器设置相一致的,您可以根据需要自行调整语言栏。

立即开始注册 »

image

填写用户名密码

01 请设置您的 账号用户名

02 为您的帐号 设置密码

03 重新 输入密码

立即开始注册 »

图片

填写账号联系人以及公司信息

01 填写公司联系人 姓名全称

02 填写公司联系人的 联系电话

03 填写 公司名称

注: 公司名称请务必与您所提供的营业执照公司名称保持一致

04 填写 公司办公地址

注: 省份/自治区/直辖市 - 城市 - 区 - 街道门牌号以及楼层信息 - 邮政编码

05 请选择 是否需要发票

注: *附件-申请发票流程 供您参考

06 点击查看 客户协议 勾选方框表示您已阅读,并同意客户协议的条款

立即开始注册 »

图片

企业信息验证

01 在此上传 企业注册执照

02 请填写网络安全负责人的 姓名

注: 该字段务必与您下方提供的身份证号匹配或与证件上的姓名保持一致

03 请填写网络安全负责人的 联系方式

注: 有效的电子邮件地址 - 有效的中国内地 手机号码 - 座机号码(如无座机,请填写正确有效的手机号码)

04 在此上传网络安全负责人的 身份证件

注: 当您选择证件类型为“身份证”时,您需要填写正确的身份证号码,选择其他证件类型时,您需要上传证件扫描稿

立即开始注册 »

图片

手机验证与支持计划

01 在此填写 手机号

02 请输入您收到的 4 位 验证码

03 请点击 继续

04 请根据需求 选择一个支持计划

立即开始注册 »

图片
Summit

亚马逊云科技中国峰会即将开幕!

6 月 19 日 - 20 日|上海世博中心

与 12,000+ 云计算从业者齐聚一堂,探索全球行业应用实践,共话未来!