搜索引擎是当今网络应用程序的重要组成部分。它们可以帮助用户快速、轻松地找到相关内容。Elasticsearch 是一款流行的开源搜索和分析引擎,可用于构建强大的搜索引擎。在本博客文章中,我们将探讨如何使用 Node.js 和 Elasticsearch 构建搜索引擎。
前置条件
为了开始本教程,需要准备以下内容:
- 在本地计算机上安装 Node.js 和 NPM
- 在本地计算机或者服务器上安装Elasticsearch
- 具备 Node.js、JavaScript 和 Elasticsearch 基础知识
Step 1: 设置 Elasticsearch
第一步是设置 Elasticsearch。以下是在本地计算机上安装 Elasticsearch 的步骤:
- 从官方网站下载Elasticsearch并解压安装文件
- 运行Elasticsearch可执行文件
- 在 Web 浏览器中打开 http://localhost:9200/ 检查Elasticsearch 是否正在运行
Step 2: 安装 Elasticsearch Node.js 客户端
接下来的步骤是安装 Elasticsearch Node.js 客户端。以下是安装客户端的步骤:
- 打开一个新的终端窗口并导航到您的项目目录
- 运行以下命令以安装 Elasticsearch Node.js 客户端
npm install elasticsearch --save
Step 3: 创建 Elasticsearch 索引
下一步是创建 Elasticsearch 索引。以下是创建索引的步骤:
- 打开一个新的终端窗口,并运行以下命令来创建一个新的索引
curl -X PUT "http://localhost:9200/books"
Step 4: 将数据插入 Elasticsearch
下一步是将数据插入 Elasticsearch。以下是插入数据的步骤:
- 在项目目录创建一个名为“data.json”的新文件
- 将以下数据添加到“data.json”文件中
[{
"title": "Node.js in Action",
"author": "Mike Cantelon, Marc Harter, T.J. Holowaychuk, Nathan Rajlich",
"description": "Node.js in Action is a comprehensive guide to Node.js for developers."
},
{
"title": "Learning Node.js",
"author": "Marc Wandschneider",
"description": "Learning Node.js is a step-by-step guide to learning Node.js for beginners."
},
{
"title": "Node.js Design Patterns",
"author": "Mario Casciaro",
"description": "Node.js Design Patterns is a practical guide to using Node.js design patterns."
}
]
- 打开命令行工具,执行以下命令将数据插入到 Elasticsearch
curl -H "Content-Type: application/json" -XPOST "http://localhost:9200/books/_bulk?pretty" --data-binary "@data.json"
- 使用浏览器打开 http://localhost:9200/books/_search ,检查数据是否成功插入
Step 5: 构建Node.js应用
最后一个步骤是构建Node.js应用,使其能够搜索Elasticsearch中的数据,具体步骤如下:
- 在项目根目录创建名为“app.js”的新文件
- 在“app.js”文件中插入如下代码
const elasticsearch = require("elasticsearch");
const express = require("express");
const app = express();
const client = new elasticsearch.Client({
host: "localhost:9200",
log: "error",
});
app.get("/search", function (req, res) {
const searchQuery = req.query.q;
if (!searchQuery) {
return res.status(400).send("Search query is missing");
}
client
.search({
index: "books",
body: {
query: {
multi_match: {
query: searchQuery,
fields: ["title^3", "author^2", "description"],
},
},
},
})
.then((response) => {
const hits = response.hits.hits;
const results = hits.map((hit) => hit._source);
res.send(results);
})
.catch((error) => {
console.log(error);
res.status(500).send("An error occurred");
});
});
app.listen(3000, function () {
console.log("Server is running on port 3000");
});
在上面的代码中,我们创建了一个新的 Express 应用程序,并为“/search”端点设置了路由。当用户向“/search”端点发送 GET 请求时,我们从请求查询参数中提取搜索查询。然后,我们使用 Elasticsearch Node.js 客户端在“books”索引的“title”、“author”和“description”字段中搜索查询字符串。然后,从 Elasticsearch 响应中提取命中结果,并将它们发送回用户。
Step 6: 测试应用程序
最后一个步骤是测试应用程序,下面是测试Elasticsearch Node.js应用的步骤:
- 打开终端并切换到应用目录
- 执行如下命令启动Node.js应用
node app.js
- 使用浏览器打开链接:http://localhost:3000/search?q=node.js
- 您应该能够看到包含搜索结果的JSON文件
总结
在这篇文章中,介绍了如何使用Node.js和Elasticsearch构建一个搜索引擎。并按步骤介绍了如何运行Elasticsearch服务、安装 Elasticsearch Node.js 客户端、创建 Elasticsearch 索引、向 Elasticsearch 插入数据、构建 Node.js 应用程序以及测试应用程序。通过执行这些步骤,您可以使用 Node.js 和 Elasticsearch 为您的 Web 应用程序创建一个功能强大的搜索引擎。
原文链接
如侵则删