Elasticsearch 简介:它是什么以及这个搜索引擎是如何工作的

无论您是从事电子商务还是 模型风险管理服务,您可能是每天都可以从使用 Elasticsearch 中受益的数以万计的企业中的一员。 当您阅读“搜索引擎”一词时,您会想到 Google,但 Elasticsearch 适用于需要快速搜索大量自己数据的企业。

在本文中,我们将介绍 Elasticsearch 是什么、它是如何工作的,以及您需要了解的所有其他内容,以使其适用于您的业务。

什么是弹性搜索?

Elasticsearch 是最流行的企业搜索引擎,但许多人从未听说过它。 Elasticsearch 允许您实时存储、查询和分析庞大的数据集。 它通常用于复杂的查询和高性能应用程序,如 eBay 和 Netflix。

ELK堆栈
麋鹿堆栈。 (资源: logz.io)

Elasticsearch 是当今最流行的数据库系统之一,主要用于搜索和日志分析。 这是的一部分 麋鹿栈 – Elasticsearch、Logstash、Kibana – 这是当今最流行的日志分析平台。 这是一套免费和开放的数据采集、丰富、存储、分析和可视化工具。

ELK 堆栈对于抓取网络和梳理内部日志和数据一样有用。 ObjectRocket 的 Twitter 集成使用 Elasticsearch 从您选择观看的主题标签中提取推文。 这使您能够自动提取大量数据,并为大规模复杂搜索做好准备。 ELK 堆栈以其简单的 REST API、分布式特性、速度和可扩展性而闻名。

ELK 堆栈的其他部分是 Logstash 和 Kibana。 Logstash 是一种开源工具,可让您从多个来源获取数据,对其进行更改,并将其转发到任何给定流程的下一步。 借助插件和预先构建的过滤器,它允许用户从几乎任何地方摄取数据。

Kibana 是一个数据可视化工具,提供易于使用的交互式图表和预建过滤器。

随着世界上更多的 IT 基础设施 移动到云端,ELK 堆栈提供了一种经济高效的日志分析解决方案,使您的开发人员和 DevOps 能够获得有关系统故障和应用程序性能的有用见解。 正如我们将看到的,公司还能够使用它来增强客户服务和欺诈检测等功能。

Elasticsearch 是如何工作的

ELK栈教程
ELK 堆栈教程。 (资源: HowToDoInJava)

将数据添加到 Elasticsearch 称为“索引”。 如果您正在运行电子商务操作,则可以设置自动管道,将数据实时发送到 Elasticsearch 以获取索引。 Elasticsearch 是一种 API,这意味着您可以通过多种方式使用 POST 或 PUT 方法将数据输入其中。

只要您设置了 API 密钥,就可以将数据从任何其他可以使用 JSON 的应用程序添加到 Elasticsearch。 所有数据都以 JSON 对象的形式提供,但您无需手动将其压入该形状。 Elasticsearch 不需要提前定义数据结构。

有很多东西需要吸收,所以让我们用一些有用的术语来分解 Elasticsearch。

文件

文档是 Elasticsearch 中最简单的数据类型,以 JSON 表示。 文档类似于数据库中的一行。 Elasticsearch 中的文档可以是任何以 JSON 编码的结构化数据,而不仅仅是文本。

刻度

具有可比质量的文档集合是一个“索引”。 在 Elasticsearch 中,索引是您可以进行搜索查询的最广泛的类别。 索引中的任何文档在逻辑上都是相关的。

在电子商务网站的上下文中,您可以有一个“客户”索引,一个“SKU”索引,一个“购买”索引。 索引有一个名称,用于在对其包含的文档执行操作时引用它。

倒排索引

在 Elasticsearch 中,索引实际上是一种“倒排索引”,是所有搜索引擎都使用的机制。 它是一种数据结构,用于存储键值对及其在文档或一系列文档中的位置。 倒排索引不是直接存储文本字符串,而是将每个文档分成单独的搜索短语(例如每个单词)。 然后它将每个搜索词映射到它出现的文档。

如果“Elasticsearch”一词在本文中出现 20 次,则索引中的一行将具有键值对“Elasticsearch:20”。 这种事情是让谷歌决定哪些页面与您的搜索最相关的原因。 这就是 Elasticsearch 能够将文档分解为更细粒度的数据的方式。

集群是一个或多个连接节点的集合。 任何给定的工作都在不同的“节点”之间划分,允许搜索比在一台计算机上更快地发生。 在 Elasticsearch 集群中的所有节点之间分配任务、搜索和索引是它强大的原因。

Node

作为集群一部分的单个服务器称为节点。 节点是存储数据并帮助聚集索引和搜索的计算机。 Elasticsearch 节点可以通过多种方式设置。

有一个“主节点”,它控制集群的其余部分。 “数据节点”,存储数据并运行搜索等操作。 还有一个“客户端节点”,它将请求引导到主节点和数据节点。

碎片

Elasticsearch 允许您将索引拆分为“碎片”,这些碎片是索引的较小部分。 每个分片都是一个功能齐全且自包含的“索引”,可以托管在任何集群节点上。

副本

Elasticsearch 允许您创建“副本分片”或简称为“副本”,它们是索引分片的副本。 主分片被分配给索引中的每个文档。 副本提供数据的冗余副本以防止硬件故障,这在 Google 和 Facebook 等大规模运营中成为一个问题。

Elasticsearch 的用途是什么

Elasticsearch 和 ELK 堆栈在尖端人工智能研究中与在大公司的日常运营中一样受欢迎。

例如,Netflix 使用 ELK Stack 来监控和分析客户服务运营。 他们能够自动分类和自动查询大量数据。 他们还利用了 Elasticsearch 的自动分片、复制和大型插件生态系统。

沃尔玛使用 ELK 深入了解客户习惯并跟踪商店绩效。 在特殊情况下,它也被用于打击欺诈。 通过接管 4 亿条元数据记录 从交易中,沃尔玛能够利用这些知识实时识别欺诈行为,包括 IP 地址、位置和其他系统流量等信息。

针对老年人的礼品卡计划一直是一个特殊的问题,沃尔玛通过在这些交易发生时捕捉到这些交易,为客户节省了数百万美元。

Adobe 使用 Elasticstack 来管理大型应用程序,这些应用程序必须搜索数百万个项目,例如 Adob​​e Stock 中的图像。 Adobe 的 Elasticsearch 插件与他们自己的图像识别 AI 一起工作,包括“相似度”插件和“搜索排名”插件。

这为图像识别提供了动力,使用户可以找到与其输入相似的照片。 (想想 Google 的反向图像搜索。)Elasticsearch 还使他们能够识别人脸、识别对象并自动标记图像以供用户搜索。

Elasticsearch 已经为机器学习做好了准备。 摄取数据后,ELK 堆栈会对其进行分析,以确保您拥有在日志中运行搜索所需的元数据。 跨越几个 神经网络架构的类型与卷积神经网络一样,Elasticsearch 能够快速对您的数据进行机器学习查询。 所有这些都是实时发生的,因为图像被上传到平台。

随着卷积神经网络的价值越来越明显,企业利用他们已经收集到的运营数据变得更加紧迫。 什么是卷积神经网络? 这是一种训练 AI 的方式,涉及两个 AI:训练者和受训者。

当受训者对前面的数据进行猜测时,例如“这两张人脸图像是同一个人”,训练者给出的是或否的答案,这是由人类创造者给出的。 如果答案是错误的,一些“神经元”会被随机改变并再次运行测试。 这可能会在数小时内每秒发生数千次,直到 AI 从提供的数据中可靠地推断出正确答案。

Elasticsearch 使您能够对数据实施 MLOps 最佳实践,例如分类、回归和异常值检测。 Elasticsearch 的推理摄取处理器会在您的数据进入后立即将您的机器学习模型应用于您的数据。 

为什么使用 Elasticsearch

Elasticsearch 不仅仅是一个搜索引擎。 使用插件和能力 使用机器学习模型 这使得谷歌如此强大,它允许企业构建复杂的数据操作,利用他们每天生成的客户数据。

另请阅读

作者照片

蒲寒琳的文章