火花Elasticsearch

回到术语表

Spark Elasticsearch是什么?

Spark Elasticsearch是一个NoSQL分布式数据库,用于存储、检索和管理面向文档的半结构化数据。它是一个GitHub开源的REbob下载地址STful搜索引擎,构建在Apache Lucene之上,并根据Apache许可证条款发布。

Elasticsearch是基于java的,因此适用于许多可以搜索和索引不同格式文档文件的平台。bob体育客户端下载Elasticsearch中存储的数据是无模式JSON文档的形式;类似于NoSQL数据库。

显示Spark Elasticsearch进程的图像。它从一个带有单词“日志”的文档开始,移动到“收集和转换”,然后使用Elasticsearch进行“搜索和分析”,最后使用Kibana进行“可视化和管理”。

Elasticsearch的历史和介绍

Elasticsearch是一个流行的全文搜索引擎,最初是由谷歌Brain Team的工程师设计和开发的,是一组更大的开源工具Elastic Stack的一个组成部分。它被广泛应用于许多商业应用,从Reddit到YouTube到eBay。对于许多公司来说,基于文本的搜索已经成为其业务流程的重要组成部分。在这方面,Elasticsearch与其他搜索引擎相似。

Elasticsearch与其他搜索引擎的一个关键区别是,Elasticsearch可以存储和管理分布式数据。换句话说,它被设计用来处理大小不断变化的数据。这为非常复杂的查询提供了功能,无论数据集有多大。但是,让单个数据库服务器处理来自多个用户的数据的潜在影响可能会显著增加。

谁在使用Elasticsearch?

数以千计的顶级公司使用Elasticsearch搜索他们的在线和离线数据,包括谷歌、甲骨文、微软等科技巨头和许多其他家喻户晓的名字。

但你不一定要成为科技巨头才会想要一种简单的方法来索引结构化数据。你只需要知道它的存在并理解它是如何工作的。

但Elasticsearch究竟是用来做什么的呢?

Elasticsearch可以服务于广泛的用例,例如:
  • 测井和测井分析:围绕Elasticsearch构建的互补开源软件和平台生态系统bob下载地址使其成为最容易实现和扩展的日志解决方案之一。bob体育客户端下载
  • 收集和合并公共数据:Elasticsearch足够灵活,可以接收多个不同来源的数据,并保持所有数据的可管理性和可搜索性。
  • 全文搜索:ElasticSearch是面向文档的。它存储和索引文档。索引创建或更新文档。索引完成后,就可以搜索、排序和筛选完整的文档——而不是列数据行。
  • 事件数据和指标:Elasticsearch还以在时间序列数据(如度量和应用程序事件)上的出色工作而闻名。无论您使用的技术是什么,Elasticsearch都可能具有为常见应用程序轻松抓取数据所需的组件;在极少数情况下,它没有,添加这种功能是相当容易的。

Elasticsearch架构:关键组件

要了解Spark Elasticsearch是如何工作的,什么时候使用它,什么时候不使用它,你必须首先了解Elasticsearch架构背后的基础设施。这些关键组件包括从Elasticsearch集群、端口9200和9300、Elasticsearch分片到Elasticsearch副本、分析器和文档的所有内容。

Elasticsearch集群

elasticsearch集群是一组相互连接的计算节点,所有节点都存储不同的集群数据。作为用户,您可以通过更改“elasticsearch”来调整分配给每个集群运行的节点数量。Yml”文件在配置文件夹中找到。虽然可以运行尽可能多的集群,但大多数用户通常发现一个节点就可以达到他们想要的结果。

Elasticsearch节点

Elasticsearch节点是一种计算资源,专门用于搜索、索引和扩展数据库。由于Elasticsearch是一个分布式数据库,它使用单一的真实来源,即保存所有数据的Elasticsearch数据节点。集群中的每个节点使用不同的名称。通常,Elasticsearch节点在每个索引中有大约1000万到5000万文档。

端口9200和9300

Elasticsearch碎片上有两种类型的端口可用。两个分片端口中的第一个始终是开放的,第二个分片端口只有在创建Elasticsearch索引和初始化集群时才会打开。9200是用于主分片的默认端口,9300是用于其副本的默认端口。

Elasticsearch碎片

Elasticsearch碎片只是一个索引内的Kibana索引的集合。Elasticsearch中有两种类型的索引,Elasticsearch文档(doc)和Elasticsearch索引。文档与标识符和具有唯一名称的索引绑定。

Elasticsearch副本

副本是碎片的副本,所有更改都反映在次要副本上,但对客户端保持透明。当添加、删除、更新或修改新数据时,主副本会自动更新。

Elasticsearch分析仪

分析器是Elasticsearch集群的一部分,它从数据库中获取数据并对其进行分析。这使得对返回给用户的数据进行筛选和排序成为可能。

Elasticsearch文档

Elasticsearch文档是Elasticsearch中的主要索引类型。每个文档都是作为数据集中的ID创建的,每种文档类型都有一个列。Elasticsearch的一个简单的文档ID示例是{doc ID}。通常,Elasticsearch集群中的每个文档都有一个分片ID、名称和索引数组,所有字段都有自己的分片标识符。

Elasticsearch是如何工作的?

简而言之,Elasticsearch的工作原理是获取数据并将其发布到集群中的每个节点上,然后根据当前存储的数据量上下伸缩数据。Elasticsearch的好处是能够将所有数据存储在一个数据库中,使用弹性索引容器。

因为Elasticsearch是一个面向文档的RESTful搜索引擎,它有各种有用的工具,可以处理大型的、令人生畏的数据集。此外,该软件还可以作为其他工具的补充。例如,Elasticsearch + Spark

Elasticsearch查询示例

假设您想搜索单词“Telecommunications”。下面的简单搜索语法就可以做到这一点:

“电信”美元

由于Elasticsearch是从文档中工作的,所以您不能简单地在文档列表中搜索。您需要查询一个“文档类型”。我们将使用短语“类型:电信”来确保我们只获得符合搜索条件的文档。

为了进行此查询,我们将文档ID号作为查询参数传递:

类型:电信“美元

为了进一步测试,你还可以通过运行以下命令创建一个简单的示例文档:

创建索引:type:telecommunications创建分区:type:telecommunications——data-urlencode /tasks——data-urlencode tasks/

Elasticsearch使用什么类型的数据库?

通过将Lucene索引构建与健壮的分布数据库模型相结合,Elasticsearch工具能够将数据集分割成称为碎片的小组件,并将它们分布到各个节点上。

但是Elasticsearch在哪里存储数据呢?

Elasticsearch中存储的数据支持JSON格式和CSV格式。每个索引对于存储在索引中的文档都有自己的模板。索引完全复制,使用消息总线与二级复制通信。日志文件被写入Elasticsearch索引。

这些文档以键值对数组的形式存储在称为“memcached集”的数据结构中。memcached集是一种轻量级、低内存、可伸缩的数据结构,能够保存和处理具有大内存容量的数据。

Elasticsearch的存储针对摄取、索引和搜索操作进行了优化,文件会定期写入磁盘。事实上,改变索引大小的唯一方法是删除最后插入的文档并用一个新的文档替换它。这个任务称为“数据迁移”,指的是从新索引创建一个新文档,更新并重新插入。

什么是Elasticsearch聚合?

Elasticsearch聚合,或将相同的集群分配到多个端点,是一个强大的特性,允许您使用相同的Elasticsearch集群获取额外的数据和功能,而不会影响生产集群的性能。

在聚合集群时,将为每个节点分配三种不同工作负载类型中的一种。工作负载类型为:
  1. 非关系
  2. 联机事务处理(OLTP)
  3. 在线分析处理(OLAP)

非关系

所有由Elasticsearch生成的网络请求都是由对Elasticsearch集群运行的查询生成的。

当Elasticsearch节点空闲时,操作系统负责在后台线程上运行查询,并持续报告结果。当使用Elasticsearch节点时,它将参与故障转移机制(在节点故障的情况下),或者(在节点过载的情况下)将查询请求传递给许多其他节点,直到其中一个节点空闲。

虽然Elasticsearch生成的网络流量最常见的是查询相关数据,但还有许多其他情况也可以利用Elasticsearch。

OLTP

由Elasticsearch生成的所有网络请求仍然是由对Elasticsearch集群运行的查询生成的。

虽然这可以是一个大型系统的完整Elasticsearch集群(当然是一个良好的开端),但有时需要将Elasticsearch与关系数据源结合使用。在这些情况下,Elasticsearch将运行在一个辅助关系数据源上进行处理,并且只跟踪它已运行的一些查询。在这个场景中,每个节点只分配一个备用源,另一个空闲。

OLAP

Elasticsearch聚合和常规聚合之间的一个关键区别是,虽然其他聚合可以出于多种目的使用相同的Elasticsearch集群,但Elasticsearch聚合使用辅助数据源来存储和处理聚合数据。这允许Elasticsearch聚合存储更多数据,而无需在主要数据集(如SQL或NoSQL数据集)上创建额外的查询。

如何安装和使用Elasticsearch

安装相当简单。可以为Elasticsearch使用默认存储库,也可以为Elasticsearch设置默认环境。

Elasticsearch使用一个名为Kibana的配置文件。Yml作为其配置的基础。您可以修改该文件以满足您的需要。您还可以使用任何更流行的Elasticsearch插件提供商,如InfluxDB, Logstash等。

安装Elasticsearch的步骤:

  1. 安装Elasticsearch Development版本以及服务器和安装依赖项
  2. 安装Java的BOSH扩展。BOSH扩展可以帮助您为Elasticsearch编写HTML模板,使数据更容易为人类以及数据操作工具所访问和阅读。BOSH扩展需要Java运行时。您可以在操作系统上使用Java的默认存储库来安装它。
  3. 发射Elasticsearch
  4. 为BOSH安装Java插件
  5. 就是这样。Elasticsearch已经在您的机器上启动并运行,现在您可以以一种易于阅读的方式访问所有数据。

Elasticsearch数据可视化

Elasticsearch允许您通过一个简单的API搜索和过滤所有类型的数据。该API是RESTful的,因此用户不仅可以将其用于数据分析,还可以将其用于基于web的应用程序的生产。目前,Elasticsearch包括面搜索,一个允许你计算数据聚合的功能。以下是一些最相关的功能:
  • 它提供了一个可伸缩的搜索解决方案。
  • 执行近乎实时的搜索。
  • 提供多租户支持。
  • 简化备份流程,保证数据完整性。
  • 在服务器崩溃的情况下可以恢复索引。
  • 使用Javascript对象符号(JSON)以及Java应用程序接口(api)。
  • 自动索引JSON文档。
  • 索引使用唯一的类型级标识符。
  • 每个索引都可以有自己的设置。
  • 可以使用基于lucene的查询字符串进行搜索。

为什么使用Elasticsearch而不是SQL?

Elasticsearch服务是迄今为止应用最广泛、功能最强大、最实用的搜索技术,因为当涉及到快速有效地处理大量数据时,它明显优于大多数SQL同类服务。

Elasticsearch是专为企业搜索而构建的,为依赖数据分析的企业提供强大的功能和易于使用的工具。从而为他们提供了一种更实用、更灵活的方式,以更少的资源密集型方式存储、搜索和分析批量数据。

如何检查Elasticsearch版本

有两种方法可以快速检查您正在运行的Elasticsearch版本。第一种方法是启动并登录到ElasticSearch控制台并查看软件版本。第二种方法是检查Elasticsearch的官方文档。

市场上排名前三的Elasticsearch替代品

在考虑使用哪种软件时,您可以在做出决定之前考虑以下三种Elasticsearch替代软件:

AWS

亚马逊网络服务(AWS)已经成为初创公司、前沿研究机构和希望增强其计算基础设施的大型企业的顶级计算平台。bob体育客户端下载凭借允许客户使用和构建自己的虚拟服务器的技术,以及业界最广泛的云计算服务,AWS为微软Azure和谷歌的GCP之间的所谓“云战争”提供了支持。

Solr

Apache Solr是一个用Javbob下载地址a编写的开源(BSD许可)搜索分析引擎守护进程,是最流行的开源搜索引擎之一。事实上,Solr为世界上许多最大的电子商务网站和社交媒体平台的搜索功能提供了支持,包括Twitter、雅虎、亚马逊、eBay和eBay企业。bob体育客户端下载

Solr使用分布式架构提供快速搜索,并具有独特的统一存储API,使搜索引擎能够与企业使用的几乎任何存储机制无缝集成。

ArangoDB

ArangoDB是一个分布式的、面向NoSQL文档的数据库,由于其强大的数据分析处理和易用性,它已经成为一个受欢迎的选择。它是一种类似sql的语言,在ArangoDB键值存储上运行,允许用户像在关系数据库中一样创建表、连接和查询。

ArangoDB在保持所有代码更新方面做得很好,支持页面也设计得很好。随着项目的成熟和更多人的贡献,您可以期望这些页面保持最新且易于导航。更不用说,它兼容所有主要的编程语言,如Python和Javascript。

三个最好的Elasticsearch工具

为了充分利用您的数据,我们建议将Elasticsearch与其他工具和软件(最著名的是Hevo data、Logstash和Apache Nifi)结合使用。

Hevo数据

Hevo Data Elasticsearch是一个免费的开源分布式搜索引擎,旨在获取Elasticsearch数据,将其解析为查询,并在集群节点上作为事件日志运行。该软件允许您对实时数据以及数据备份进行实时分析查询。

Logstash

简单地说,Logstash是一个Elasticsearch工具,它允许您定义规则,帮助您在Elasticsearch提取数据后立即管理传入数据。通过获取数据并立即对其进行处理,Logstash为充分利用数据提供了完美的分析和可视化工具。

Apache NiFi

Apache Nifi是一组支持多个数据源之间“深度链接”的库,包括但不限于流行的开源API,如Facebook的核心位置API、Twitter的REST API,甚至Yelp的应用程序内功能API。bob下载地址使用Apache NiFi,用户可以链接自己的api,并将数据集的所有信息提供给各种其他软件。

Elasticsearch适合你吗?

有了您现在对Elasticsearch的了解,从它的功能到它的基础设施和架构,剩下的就是决定它是否是您业务的理想工具。

额外的资源


回到术语表