Elasticsearch 探索

17 Mar 2025 | 6 分钟阅读

Elasticsearch 是一个运行在浏览器上的数据库工具,用于查询输入的文字。它在核心还执行一些其他任务。它专为检索文本而设计,并返回与给定查询相同的文本。Elasticsearch 是一个可扩展且支持集群的数据库工具。

更具体地说,它是一个用 Java 编写的数据库服务器。它从用户那里获取数据并将其以文档形式存储。Elasticsearch 允许我们对其中存储的数据执行各种类型的搜索,例如:按描述搜索任何数据库、搜索博客文章以及查找爬取网页中的相同文本。

Elasticsearch Exploring

以下是 Elasticsearch 的一些要点:

  • Elasticsearch,NoSQL 数据库,基于 Apache Lucene 搜索引擎。
  • 使用 Elasticsearch 非常方便,因为它的主要协议是通过 JSON/HTTP 实现的。
  • Elasticsearch 在存储数据和对其执行操作方面值得称赞。
  • 当面对处理自然语言中半结构化文本的任务时,它是一个极好的工具。

Elasticsearch 是 Lucene

Elasticsearch 主要基于另一个名为 **Lucene** 的软件项目。基本上,Elasticsearch 基于 Lucene 搜索引擎。因此,它在 Elasticsearch 中占有重要地位。下面将讨论一些要点,以更好地理解 **Elasticsearch 是 Lucene**:

  1. 将 Elasticsearch 理解为围绕 Lucene 的 Java 库构建的基础设施是一个很容易理解的概念。
  2. Lucene 是一个非常流行、经过验证且测试过的搜索引擎,得到了广泛应用。
  3. Elasticsearch 本身为用户提供了更简洁易用的 API。它还在 Lucene 的实现之上提供了可扩展性和操作工具。
  4. 许多公司都使用 Apache Lucene。
  5. Lucene 被认为是开源搜索软件中的佼佼者。

附加价值

  1. 众所周知,Lucene 是一个极好的工具,但另一方面,直接使用它却很麻烦。
  2. Elasticsearch 提供了比 Lucene Java API 更简单直观的 API。
  3. 它提供了一个基础设施,使得跨数据中心和机器的扩展相对简单。
  4. 以下是 Elasticsearch 与 Lucene 相比带来的一些功能。
    1. 简单的 API
    2. 集群和复制
    3. 与非 Java 的互操作
    4. 易于使用的操作等。

Elasticsearch 解决的问题

正如每个工具都提供解决其他工具无法解决的问题的特性一样。同样,Elasticsearch 也拥有一些解决问题的特性。Elasticsearch 在各种情况下都非常有用,并解决了其他数据库搜索引擎中出现的许多问题。以下是 Elasticsearch 引擎非常适合的几个任务。

  • 使用特定的短语或文本字符串(如“厨师刀”)搜索大量产品,并返回最佳结果。
  • 根据之前搜索“厨师刀”的例子,它会细分多个部门并显示它出现的各个部分。
  • 在搜索框中,自动完成功能可以根据之前发出的搜索来解决部分输入的单词问题。
  • Elasticsearch 非常适合以分布式方式存储大量 JSON 数据(半结构化数据)。此外,它还指定了跨机器集群的数据冗余级别。

Elasticsearch 非常适合解决上述类型的问题。然而,对于某些其他问题,它并不是最佳选择,例如关系数据库 (RDBMS) 优化的那些问题。其中一些问题将在下面讨论:

  • 它不是计算库存中剩余物品数量的好选择。
  • 它不提供回滚支持,并且不适合事务性地执行两个操作。
  • 在查找给定月份所有发出的发票的总行项目金额时。
  • 创建在给定各种条件下保证唯一的多个记录。例如 - 手机号码。

Elasticsearch 在提供数据的近似答案方面非常有用。例如,通过质量对结果进行评分。它还可以执行匹配和统计计算。传统的数据库,如 RDBMS(关系数据库),提供了精度和数据完整性,而 Lucene 和 Elasticsearch 也有一些规定。

运行和启动

由于 Elasticsearch 是一个运行在搜索引擎上的数据库工具,它可以安装和运行在几乎所有平台,如 Windows、Linux 或 Mac 等。在之前的教程中,我们已经讨论了在 Windows 平台上安装、使用和设置 Elasticsearch 所需的工具。

现在,让我们简要讨论一下在 Windows、Linux、Mac 等其他平台上的工具设置,这可能需要我们使用 Elasticsearch。以下是所有平台上通用的基本步骤:

  • 首先,您需要在所有平台上安装 Java 并设置其路径。
  • 通过执行 **java -version** 命令,您可以验证 Java 是否已安装在您的系统上。
  • 之后,您可以安装通过命令行运行的 Elasticsearch 应用程序系统,执行 Elasticsearch 批处理文件(.exe 文件)。
  • 此批处理文件不提供交互式用户界面。因此,您需要为其添加或安装插件。

这些是安装 Elasticsearch 的简单步骤。有一些针对不同平台的单独步骤:

Linux

  • 如果您使用的是 Linux 操作系统,我们建议您下载 Elasticsearch 数据库工具的 **.rpm** 或 **.deb** 版本。
  • 下载成功后,解压缩以提取文件。
  • 解压文件后,您可以运行 Elasticsearch 的批处理文件 (elasticsearch.bat) 以守护进程的形式在后台启动服务器。

Mac OS

  • 对于 Mac 操作系统,我们建议您下载 Elasticsearch 工具的 zip 设置。
  • 下载后,将其解压到一个文件夹中。
  • Mac OS 具有一个终端,可以运行与 Windows 命令提示符类似的命令。
  • 导航到 bin 目录,然后在终端中通过传递命令 **./elasticsearch** 来运行 Elasticsearch 的可执行文件。

Microsoft Windows

对于 Microsoft Windows 操作系统,我们在本教程的早期章节中已经详细讨论过。让我们对其进行概述。

  • 对于 Windows 操作系统,下载 Elasticsearch 的 .zip 包并从中提取文件。
  • 运行 bin 文件夹中存在的 elasticsearch.bat(可执行文件)。
  • 运行 Elasticsearch 可执行文件后,我们将检查服务器是否正在运行。

验证服务器是否正在运行

在您偏好的操作系统上安装 Elasticsearch 并执行批处理文件后,现在是时候验证服务器是否正在运行而没有任何错误了。为此,我们需要打开 Web 浏览器。

  • 打开任何 Web 浏览器,如 Chrome、IE 或 Mozilla Firefox。
  • 在浏览器地址栏中键入 localhost:9200。
  • 如果您看到与下面截图相同的输出,则表示服务器正在成功运行,没有任何故障。

截图

Elasticsearch Exploring

加载数据集

  • Elasticsearch 提供了一些预定义的代码示例,这些示例依赖于加载到 Elasticsearch 服务器中的底层数据集。
  • 此存储库一直在进行一些更改。因此,请务必保持更新。
  • 在存储库克隆后,通过提供 Elasticsearch 服务器的地址、执行 elastic-loader.jar 程序以及数据文件的路径,您可以将示例加载到服务器中。
  • 每当您需要加载 movie_db 数据集等数据集时,请打开命令提示符,导航到 ee-datasets 文件夹并运行。

运行示例

本章完全介绍了 Elasticsearch 最受欢迎的 API,即 JSON HTTP 的独占使用。本教程中讨论和实现的所有示例都是 HTTP 请求的独立描述。

  • 您可以自由使用任何插件与 Elasticsearch 进行交互。我们建议您使用 **elasticsearch-head** 插件,因为我们在整个教程中都通过此插件执行所有查询。
  • **elasticsearch-head** 插件可作为 Google 应用商店的扩展提供。您可以将其添加到您的浏览器。它简单易用。
  • 还有一些其他工具或插件,如 analysis-icu、Kibana 等。这些工具也能很好地与 Elasticsearch 一起工作。
  • 我们已经学习了 HTTP 操作(GET、POST、DELETE、PUT、HEAD)、请求正文和 URL 路径。

本章完全关于 Elasticsearch 的探索。