如何在 Deno 中使用 Elasticsearch 进行全文搜索?

阅读时长 4 分钟读完

前言

Elasticsearch 是一个基于 Lucene 的搜索引擎,它提供了丰富的查询语言、分词器、聚合计算等功能。该搜索引擎适用于大规模数据集的全文搜索和分析。本文将介绍如何在 Deno 中使用 Elasticsearch 进行全文搜索。

环境搭建

在使用 Elasticsearch 之前,需要先搭建好 Elasticsearch 环境。可以通过以下链接下载并安装 Elasticsearch:https://www.elastic.co/cn/downloads/elasticsearch。安装完成后,启动 Elasticsearch:

Elasticsearch 默认使用 9200 端口提供 HTTP API 。打开浏览器访问 http://localhost:9200/ ,可以看到 Elasticsearch 提供的 HTTP API 接口信息。

安装 elasticsearch-js 模块

在 Deno 中使用 Elasticsearch 可以通过 elasticsearch-js 模块来实现。elasticsearch-js 模块是 Elasticsearch 提供的官方 Node.js 客户端,可以用于连接 Elasticsearch 集群、执行查询、聚合、索引等操作。

安装 elasticsearch-js 模块:

创建索引

在 Elasticsearch 中,数据被组织为索引。索引类似于关系数据库中的表,但 Elasticsearch 不要求有相同的字段。索引中的每个文档都有一个类型和一个 ID。类型用于将文档分为多个类别,通常不建议使用。

创建一个名为 posts 的索引:

添加数据

添加数据使用 index API,将 JSON 格式的文档添加到索引中:

-- -------------------- ---- -------
----- --------------
  ------ --------
  --- ----
  ----- -
    ------ -------------- ----------
    ----- ----------------- ------------
    ---------- -----
    ------------- -----------------------
    --------
      -------------- -- - ------ ------ ----- -- ------- -- -------- - ------------ ------------------- --------- ------ ------ ---- -- ---- --- --------- --- ----------- ---- ------------
  --
---

这将在名为 posts 的索引中创建一个文档。文档的 ID 设置为 1。

查询数据

在 Elasticsearch 中,查询是指从一个或多个索引中检索与查询条件匹配的文档。elasticsearch-js 模块提供了多种查询类型,例如:match、term、range、bool、and、or 等。

下面的代码将搜索包含关键字 "elasticsearch" 的文档:

-- -------------------- ---- -------
----- - ---- - - ----- ---------------
  ------ --------
  ----- -
    ------ -
      ------ -
        -------- ----------------
      --
    --
  --
---

----------------------------

查询结果将存储在 hits 对象中。hits.hits 中包含命中的文档数组。

总结

本文介绍了如何在 Deno 中使用 Elasticsearch 进行全文搜索。首先需要搭建 Elasticsearch 环境,然后通过安装 elasticsearch-js 模块实现连接 Elasticsearch 集群、执行查询、聚合、索引等操作。

完整示例代码:https://github.com/denoel/elasticsearch-deno

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65032e5295b1f8cacd03960b

纠错
反馈