Elasticsearch 是一个基于 Apache Lucene 的全文搜索和分析引擎。Elasticsearch 使得对来自多个来源的数据执行数据聚合操作以及对存储的数据执行模糊搜索等非结构化查询变得更加容易。它以类似文档的格式存储数据,类似于 MongoDB 的做法。数据以 JSON 格式序列化。这为其添加了非关系性质,因此,它也可以用作 NoSQL/非关系数据库。典型的 Elasticsearch 文档如下所示:
{ "email":"xyz@gmail.com", "dob":"04-11-1999", "city":"beijing", "country":"China", "occupation":"Software Engineer",}
它是分布式的,可水平扩展,因为可以在需要时将更多 Elasticsearch 实例添加到集群中,而不是增加运行 Elasticsearch 实例的一台机器的功能。它是 RESTful 和以 API 为中心的,因此更易用。它的操作可以通过 RestFul API 通过 HTTP 轻松访问,因此可以无缝集成到任何应用程序中。此外,各种编程语言都有大量包装器可用,无需手动使用 API,并且大多数操作可以通过处理与引擎本身通信的库函数调用来访问。通过使用 CRUD 操作——创建、读取、更新、删除——可以有效地对持久存储中存在的数据进行操作。这些类似于关系数据库实现的 CRUD,可以通过 RESTful API 中存在的 HTTP 接口执行。Elasticsearch 非常适合 –
(资料图片)
Elasticsearch 概念Elasticsearch 使用一个称为反向索引的概念。这个概念来自 Lucene 库(记住上面的 Apache Lucene)。该索引类似于书背面的术语,显示书中每个重要术语可能出现或讨论的页数。倒排索引可以更容易地根据查询中存在的关键字将查询解析到可能相关的特定文档,并通过限制要为该查询考虑的文档的搜索空间来加速文档检索过程。让我们来看看以下三个权力的游戏对话:
1.“Winter is coming.”
2.“A mind needs books as a sword needs a whetstone, if it is to keep its edge.”
3.“Every flight begins with a fall.”
4.“Words can accomplish what swords cannot.”
将这些对话中的每一个都视为一个文档,即每个文档的结构如下:
{ // 输入代码内容 “对话”:“......” }
经过一些简单的文本处理:将文本小写并去除标点符号后,我们可以构建“倒排索引”,如下所示:
Term | Frequency | Documents |
---|---|---|
a | 4 | 2, 3 |
accomplish | 1 | 4 |
as | 1 | 2 |
begins | 1 | 3 |
books | 1 | 2 |
can | 1 | 4 |
cannot | 1 | 4 |
coming | 1 | 1 |
edge | 1 | 2 |
every | 1 | 3 |
fall | 1 | 3 |
flight | 1 | 3 |
if | 1 | 2 |
is | 2 | 1, 2 |
it | 1 | 2 |
its | 1 | 2 |
keep | 1 | 3 |
mind | 1 | 2 |
needs | 1 | 2 |
sword | 1 | 2 |
swords | 1 | 3 |
to | 1 | 2 |
what | 1 | 3 |
whetstone | 1 | 2 |
winter | 1 | 1 |
with | 1 | 3 |
words | 1 | 4 |
与 Elasticsearch 相关的几个常见术语如下:
集群:集群是一组运行 Elasticsearch 引擎的系统,它们参与并彼此密切对应以存储数据和解决查询。根据它们在集群中的角色,它们被进一步分类。节点:节点是运行 Elasticsearch 运行时实例的 JVM 进程,可由集群中的其他机器或节点通过网络独立访问。索引:Elasticsearch 中的索引类似于关系数据库中的表。映射:每个索引都有一个与之关联的映射,它本质上是索引中每个单独文档可以保存的数据的模式定义。这可以为每个索引手动创建,也可以在将数据推送到索引时自动添加。文档:一个 JSON 文档。在关系术语中,这将表示表中的一行。分片:分片是可能属于也可能不属于同一索引的数据块。由于属于单个索引的数据可能会变得非常大,比如几百 GB 甚至几 TB,因此垂直增长存储是不可行的。相反,数据在逻辑上被分成存储在不同节点上的分片,这些分片分别对其中包含的数据进行操作。这允许水平缩放。副本:集群中的每个分片都可以复制到集群中的一个或多个节点。这允许进行故障转移备份。万一其中一个节点出现故障或此时无法利用其资源,则始终可以使用具有数据的副本来处理数据。默认情况下,为每个分片创建一个副本,数量是可配置的。除了故障转移,副本的使用也提高了搜索性能。关键词: ElasticsearchService
Elasticsearch是一个基于ApacheLucene的全文搜索和分析引擎。Elasticsearch使得对来自多个来源的数据执行数据聚合操作以
阳了应该怎么办-阳性感染者如何用药 02月14日18时内蒙古包头疫情数据
2023-02-14中国在美国黄金储存量_中国在美国的黄金储备有多少_环球微资讯
2023-02-14