ElasticSearch 是一种基于 Lucene 的分布式搜索和分析引擎,它可以用于全文搜索、结构化搜索、分析和日志分析等场景。在前端领域,我们经常需要使用 ElasticSearch 来索引和搜索大量的数据。Fastify 是一个快速、低开销的 Web 框架,它与 ElasticSearch 集成是一种很流行的解决方案。本文将带您深入了解在 Fastify 中使用 ElasticSearch 的完整指南。
安装 ElasticSearch
要在 Fastify 中使用 ElasticSearch,首先需要安装 ElasticSearch。ElasticSearch 官网提供了免费的下载链接和详细的安装教程,您可以按照官方文档进行安装。
安装 Elasticsearch Node.js 客户端
安装完成 ElasticSearch 后,我们需要在 Node.js 中安装 ElasticSearch 客户端。使用 Node.js 客户端可以更方便地在 JavaScript 代码中操作 ElasticSearch 索引。常用的客户端有 elasticsearch
和 @elastic/elasticsearch
两个包,它们提供的 API 不同,但都很容易使用。在本文中,我们将使用 elasticsearch
包作为例子。
要在 Fastify 中使用 ElasticSearch 和 Elasticsearch Node.js 客户端,请执行以下命令:
npm install elasticsearch
开始 ElasticSearch 操作
在安装 Elasticsearch Node.js 客户端后,我们可以在 JavaScript 代码中引用并使用它。通过 ElasticSearch 客户端,我们可以使用以下操作:
- connect():连接 ElasticSearch 服务器。
- create():创建一个新的索引。
- index():将数据存储到指定索引和类型的位置。
- search():搜索指定索引和类型的数据。
- delete():删除指定索引和类型的数据。
下面我们将分别对以上操作进行详细介绍。
连接 ElasticSearch 服务器
在使用 ElasticSearch 客户端之前,我们需要先连接 ElasticSearch 服务器。请使用以下命令连接:
const { Client } = require('elasticsearch'); const client = new Client({ node: 'http://localhost:9200', log: 'trace' });
其中,参数 node
为 ElasticSearch 服务器的 URL,log
用于设置日志级别,可选值有 trace
、debug
、info
、warning
、error
、fatal
。在开发阶段,我们通常设为 info
或 warning
。
创建一个新的索引
在 ElasticSearch 中,索引是一个文档集合。我们可以创建新的索引并定义它们的模式。请使用以下命令创建新索引:
-- -------------------- ---- ------- ----- -------- ---------------------- - ----- ----------------------- ------ ---------- ----- - --------- - ----------- - ------ - ----- ------ -- -------- - ----- ------ -- ----- - ----- ------ -- ----- - ----- ------ - - - - --- -
其中,indexName
为新索引的名称,mappings
用于定义索引的属性和类型,这里我们定义了 title
、content
、date
、tags
四个属性,类型分别为 text
、date
和 text
。
将数据存储到索引中
创建了新的索引后,我们可以将数据存储到索引中。请使用以下命令插入数据:
-- -------------------- ---- ------- ----- -------- --------------------- - ----- -------------- ------ ---------- ----- - ------ -------------- --------- -------- ------- ------- --- ------------- ---------- ----- --- ------- ----- ----------------- ---------- ----- - --- -
其中,indexName
为要插入数据的索引名称,body
为要插入的数据,包括标题、内容、日期和标签。在 ElasticSearch 中,我们可以使用 JSON 或 JS 对象来存储数据,这里我们使用 JS 对象。
搜索数据
插入数据后,我们可以使用 ElasticSearch 客户端搜索数据。请使用以下命令搜索数据:
-- -------------------- ---- ------- ----- -------- --------------------- ------ - ----- ------ - ----- --------------- ------ ---------- ----- - ------ - ------ - -------- ----- - - - --- ------ ----------------- -
其中,indexName
为要搜索的索引名称,query
为要搜索的关键词。match
查询适用于完全匹配或近似匹配的查询。在上面的例子中,我们使用了 match
查询,查询字段为 content
。
删除数据
插入错误的数据或无用的数据后,我们可以使用 ElasticSearch 客户端删除数据。请使用以下命令删除数据:
async function deleteData(indexName, id) { await client.delete({ index: indexName, id: id }); }
其中,indexName
为要删除数据的索引名称,id
为要删除的数据 ID。在 ElasticSearch 中,每个存储的文档都有一个唯一的 ID。
示例代码
下面是一个完整的例子代码,包括连接 ElasticSearch、创建新索引、存储数据、搜索数据和删除数据等操作。
-- -------------------- ---- ------- ----- - ------ - - ------------------------- ----- ------ - --- -------- ----- ------------------------ ---- ------- --- ----- --------- - -------------- ----- -------- ---------------------- - ----- ----------------------- ------ ---------- ----- - --------- - ----------- - ------ - ----- ------ -- -------- - ----- ------ -- ----- - ----- ------ -- ----- - ----- ------ - - - - --- - ----- -------- --------------------- - ----- -------------- ------ ---------- ----- - ------ -------------- --------- -------- ------- ------- --- ------------- ---------- ----- --- ------- ----- ----------------- ---------- ----- - --- - ----- -------- --------------------- ------ - ----- ------ - ----- --------------- ------ ---------- ----- - ------ - ------ - -------- ----- - - - --- ------ ----------------- - ----- -------- --------------------- --- - ----- --------------- ------ ---------- --- -- --- - ----- -------- ------ - ----- ----------------------- ----- ---------------------- ----- ------ - ----- --------------------- ------ -------------------- -- -------------- - -- - ----- -- - -------------- ----- --------------------- ---- - - -------
总结
在本文中,我们了解了如何在 Fastify 中使用 ElasticSearch 的完整指南。我们介绍了在 JavaScript 代码中使用 ElasticSearch 客户端连接 ElasticSearch 服务器、创建新索引、存储数据、搜索数据和删除数据等操作。通过学习本文,您可以更方便地在 Fastify 中使用 ElasticSearch 搜索数据,让您的应用程序更加高效、快速。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e36513f6b2d6eab3eda0ee