译文:使用Node.js 和 Elasticsearch构建一个搜索引擎

249 阅读3分钟

搜索引擎是当今网络应用程序的重要组成部分。它们可以帮助用户快速、轻松地找到相关内容。Elasticsearch 是一款流行的开源搜索和分析引擎,可用于构建强大的搜索引擎。在本博客文章中,我们将探讨如何使用 Node.js 和 Elasticsearch 构建搜索引擎。

前置条件

为了开始本教程,需要准备以下内容:

  • 在本地计算机上安装 Node.js 和 NPM
  • 在本地计算机或者服务器上安装Elasticsearch
  • 具备 Node.js、JavaScript 和 Elasticsearch 基础知识

Step 1: 设置 Elasticsearch

第一步是设置 Elasticsearch。以下是在本地计算机上安装 Elasticsearch 的步骤:

  1. 从官方网站下载Elasticsearch并解压安装文件
  2. 运行Elasticsearch可执行文件
  3. 在 Web 浏览器中打开 http://localhost:9200/ 检查Elasticsearch 是否正在运行

Step 2: 安装 Elasticsearch Node.js 客户端

接下来的步骤是安装 Elasticsearch Node.js 客户端。以下是安装客户端的步骤:

  1. 打开一个新的终端窗口并导航到您的项目目录
  2. 运行以下命令以安装 Elasticsearch Node.js 客户端
npm install elasticsearch --save

Step 3: 创建 Elasticsearch 索引

下一步是创建 Elasticsearch 索引。以下是创建索引的步骤:

  1. 打开一个新的终端窗口,并运行以下命令来创建一个新的索引
curl -X PUT "http://localhost:9200/books"

Step 4: 将数据插入 Elasticsearch

下一步是将数据插入 Elasticsearch。以下是插入数据的步骤:

  1. 在项目目录创建一个名为“data.json”的新文件
  2. 将以下数据添加到“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."
	}
]
  1. 打开命令行工具,执行以下命令将数据插入到 Elasticsearch
curl -H "Content-Type: application/json" -XPOST "http://localhost:9200/books/_bulk?pretty" --data-binary "@data.json"
  1. 使用浏览器打开 http://localhost:9200/books/_search ,检查数据是否成功插入

Step 5: 构建Node.js应用

最后一个步骤是构建Node.js应用,使其能够搜索Elasticsearch中的数据,具体步骤如下:

  1. 在项目根目录创建名为“app.js”的新文件
  2. 在“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应用的步骤:

  1. 打开终端并切换到应用目录
  2. 执行如下命令启动Node.js应用
node app.js
  1. 使用浏览器打开链接:http://localhost:3000/search?q=node.js
  2. 您应该能够看到包含搜索结果的JSON文件

总结

在这篇文章中,介绍了如何使用Node.js和Elasticsearch构建一个搜索引擎。并按步骤介绍了如何运行Elasticsearch服务、安装 Elasticsearch Node.js 客户端、创建 Elasticsearch 索引、向 Elasticsearch 插入数据、构建 Node.js 应用程序以及测试应用程序。通过执行这些步骤,您可以使用 Node.js 和 Elasticsearch 为您的 Web 应用程序创建一个功能强大的搜索引擎。

原文链接
如侵则删