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 概念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 相关的几个常见术语如下:
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。