Docker 容器中安装和使用 Elasticsearch 搜索引擎的详细步骤

什么是 Elasticsearch

Elasticsearch 是一款全文检索引擎,它可以快速地检索和分析大量数据。它是建立在 Apache Lucene 基础之上的高度可扩展的搜索引擎,可以应用于各种各样的应用场景。

Docker 容器中安装 Elasticsearch

在 Docker 中安装 Elasticsearch 非常简单,我们可以使用一下命令来安装它:

docker pull elasticsearch

这将会拉取官方的 Elasticsearch 镜像。接着,我们可以使用以下命令在 Docker 中启动 Elasticsearch 容器:

docker run -d -p 9200:9200 -p 9300:9300 --name my-es elasticsearch

这个命令将会在 Docker 中创建一个名为 my-es 的 Elasticsearch 容器,并且将容器内部的 92009300 端口暴露到 Docker 主机的相应端口。

这样我们就成功地在 Docker 容器中安装了 Elasticsearch。接下来,我们来看一下如何在 JavaScript 中使用它。

在 JavaScript 中使用 Elasticsearch

我们可以使用 elasticsearch.js 库来在 JavaScript 中使用 Elasticsearch。这个库提供了非常方便的 API,帮助我们使用 Elasticsearch 进行全文检索。

首先,我们需要使用 npm 安装 elasticsearch 库:

npm install elasticsearch

接着,我们可以使用以下代码连接到 Elasticsearch 服务器:

const { Client } = require('@elastic/elasticsearch');
const client = new Client({ node: 'http://localhost:9200' });

这将会创建一个连接到 http://localhost:9200 的 Elasticsearch 客户端。

接下来,我们可以使用以下代码在 Elasticsearch 中创建一个索引:

async function createIndex() {
  await client.indices.create({
    index: 'my_index',
    body: {
      mappings: {
        properties: {
          title: { type: 'text' },
          content: { type: 'text' },
          created_at: { type: 'date' },
        },
      },
    },
  });
}

这将会创建一个名为 my_index 的索引,并且定义了 titlecontentcreated_at 三个字段。

接下来,我们可以使用以下代码向索引中添加数据:

async function addData() {
  await client.index({
    index: 'my_index',
    body: {
      title: 'Hello World',
      content: 'This is a test document.',
      created_at: new Date(),
    },
  });
}

这将会向索引中添加一条数据。

最后,我们可以使用以下代码来进行全文检索:

async function search() {
  const response = await client.search({
    index: 'my_index',
    body: {
      query: {
        match: {
          content: 'test',
        },
      },
    },
  });
  console.log(response.body.hits.hits);
}

这将会打印出所有包含 test 关键字的文档。

总结

本文介绍了如何在 Docker 容器中安装 Elasticsearch 以及如何在 JavaScript 中使用 Elasticsearch 进行全文检索。Elasticsearch 是一款非常强大的全文检索引擎,其使用方法非常简单,可以帮助我们快速地检索和分析大量数据。

来源:JavaScript中文网 ,转载请注明来源 本文地址:https://www.javascriptcn.com/post/659e1465add4f0e0ff72c03f


纠错反馈