当前位置: 首页 > 面试题库 >

在node.js环境中将mongodb与elasticsearch集成

澹台博文
2023-03-14
问题内容

我正在一个具有以下设置的项目:

  • 我有一个Amazon EC2集群,其中有一个主服务器,3个配置服务器和3个分片服务器。
  • Master运行着一个node.js应用程序,它基本上是一个使用Express.js模块编写的REST API。
  • 我正在使用mongodb作为数据库。主服务器正在运行“ mongos”服务,该服务将数据分片到3个分片服务器中。这些服务器上运行着“ mongod”服务。

通过此设置,我想集成elasticsearch来执行搜索查询。为此,我想在我的node.js REST
API应用程序中添加一条路由,以对存储在分片中的数据执行搜索查询。

如果我在独立计算机上运行三个分片,是否还需要执行其他步骤?如何配置Elasticsearch以访问分片中的数据以建立索引?它会自动检测到此配置并建立索引吗?有人可以向我提供完成此操作应遵循的步骤吗?


问题答案:

我这样做是这样的:

我使用的是节点的sails.js框架,并使用mongo作为数据库。

首先,我已经使用npm安装了elasticsearch模块。然后将此代码添加到配置部分的名为 elasticSeach.js 的文件中。

它具有以下代码

var elasticsearch = require('elasticsearch'),

  index = "Ur_elastic_index_name_goes_here",
  client = new elasticsearch.Client({
    host: 'localhost:9200',
    log: 'trace'
  });

module.exports.elasticSearchClient = client;

module.exports.elasticSearchConfig = {
  index: index
};

之后,只需创建一个文件 ElasticSearchService.js即可
在其中进行搜索,更新等所有操作。这是一个用elasticsearch索引方法对值进行索引的示例,该方法需要:

a) 类型

b) item ,它是json类型的对象,例如

item = {
 "name" : "vishal",
 "website" : "stackOverflow"
};

方法是

function indexItem(type, item) {
  return Q.promise(function(resolve, reject){
    elasticSearchClient
      .index({
        index: elasticSearchConfig.index,
        type: type,
        body: item
      })
      .then(function (response) {
        sails.log.info("ElasticSearchService#indexItem :: Response :: ", response);
        return resolve(response);
      })
      .catch(function(err) {
        sails.log.error("ElasticSearchService#indexItem :: Error :: ", err);
        return reject(err);
      });
  });
}

从任何地方调用此方法。

我使用诺言返回值。您无需担心分片实现及其他所有问题。弹性负责。

有关类型和映射的更多信息,请参见:https
:
//www.elastic.co/guide/en/elasticsearch/guide/current/mapping.html



 类似资料:
  • 问题内容: 我想将数据同步到,我读了很多关于Elasticsearch River插件和mongo连接器的文章,但是不推荐使用mongo 4和elasticsearch 7! 作为专有软件,我想使用它来同步两者…任何人都知道如何做到这一点? 问题答案: 您可以将MongoDB和Elasticsearch与Logstash同步;实际上,同步是Logstash的主要应用之一。安装Logstash之后,

  • vue-server-renderer 在默认构建时,会预先假定有一个 Node.js 环境,这使得它在其他 JavaScript 环境(如 PHP V8Js 或 Oracle Nashorn 中无法使用。在 2.5+ 版本中,我们把那些基本上与环境无关的构建,编译到 vue-server-renderer/basic.js 中,这使得它可以在上述环境中使用。 对于所有环境,必须要预先在环境中模拟

  • 目标:开发一个基于 Spring Boot 和 MongoDB 的应用,使用 MongoDB 记录访问者信息 本项目代码维护在 DaoCloud/docker-demo-java-mongo 项目中。 您可以在 GitHub 找到本项目并获取本文中所提到的所有代码文件。 前言 生产环境中的应用,少不了数据库和缓存的配合,在我们的这个教程中,将会给大家演示如何基于 Spring Boot 和 Mon

  • 问题内容: 我在这里得到了很多人的帮助,现在我想回馈。对于那些使Node.js服务器无法与MongoDB一起使用的问题,这就是我所做的。 问题答案: 这最初是由问题提问者发布的。 一个mod在评论中要求他将其发布为答案,但未得到任何回应。因此,我清理了它并亲自发布。 查看代码时,您会注意到该代码位于内部。如果您将其撤消,它将不起作用。另外, 请勿关闭 数据库连接。否则,在第一次之后,数据库连接将不

  • 线上环境 测试环境 场景 有 有 日常优化,完整的建议,推荐 无 有 新申请资源,环境初始化测试 无 无 盲测,试用,无EXPLAIN和索引建议 有 无 用线上环境当测试环境,不推荐 线上环境 数据字典 数据采样 EXPLAIN 测试环境 库表映射 语法检查 模拟执行 索引建议/去重 注意 测试环境 MySQL 版本必须高于或等于线上环境 测试环境需要所有权限(建议通过docker启动),线上环境

  • 感谢 AdminLTE 用户将模板与后端框架集成,以下是部分,感谢他们: AdminLTE v3.0 Laravel-AdminLTE v3.x by Jeroen Noten django-adminlte3 by d-demirci AdminLTE3.MVC by somaraj admin-lte-dotnet by iyilm4z WebPx.AdminLTE.AspNetCore by