在多个 expressjs 路由中共享 elasticsearch 客户端
Sharing elasticsearch client in multiple expressjs routes
我正在尝试通过创建单独的文件将巨大的 expressjs 路由重组为更小的块。不过有几个需要连接elasticsearch客户端进行搜索:
routes/index.js
var router = require('express').Router();
var models = require("../models");
var es = require('elasticsearch');
var es_client = new elasticsearch.Client({
host: 'localhost:9200',
log: 'trace'
});
router.get('/search', function(req, res) {
// Do search in elasticsearch
// es_client.search({......});
});
module.exports = router;
routes/user.js
var router = require('express').Router();
var models = require("../models");
var es = require('elasticsearch');
var es_client = new elasticsearch.Client({
host: 'localhost:9200',
log: 'trace'
});
router.get('/user/search', function(req, res) {
// Do search in elasticsearch
// es_client.search({......});
});
module.exports = router;
但这没有意义,因为路由尝试连接到 es 客户端两次,由于 'connection in use error'.
而失败
让我的路由文件连接到elasticsearch进行搜索的好方法是什么?
创建一个 elastic.js 文件,它是这样的:
var elasticsearch = require('elasticsearch');
exports.es_client = new elasticsearch.Client({
host: 'localhost:9200',
log: 'trace'
});
并在您的 index.js 和 user.js 中使用它。
例如:- 在 user.js 中执行此操作:
var router = require('express').Router();
var models = require("../models");
var elastic = require("./elastic");
router.get('/user/search', function(req, res) {
// Do search in elasticsearch
// elastic.es_client.search({......});
});
我正在尝试通过创建单独的文件将巨大的 expressjs 路由重组为更小的块。不过有几个需要连接elasticsearch客户端进行搜索:
routes/index.js
var router = require('express').Router();
var models = require("../models");
var es = require('elasticsearch');
var es_client = new elasticsearch.Client({
host: 'localhost:9200',
log: 'trace'
});
router.get('/search', function(req, res) {
// Do search in elasticsearch
// es_client.search({......});
});
module.exports = router;
routes/user.js
var router = require('express').Router();
var models = require("../models");
var es = require('elasticsearch');
var es_client = new elasticsearch.Client({
host: 'localhost:9200',
log: 'trace'
});
router.get('/user/search', function(req, res) {
// Do search in elasticsearch
// es_client.search({......});
});
module.exports = router;
但这没有意义,因为路由尝试连接到 es 客户端两次,由于 'connection in use error'.
而失败让我的路由文件连接到elasticsearch进行搜索的好方法是什么?
创建一个 elastic.js 文件,它是这样的:
var elasticsearch = require('elasticsearch');
exports.es_client = new elasticsearch.Client({
host: 'localhost:9200',
log: 'trace'
});
并在您的 index.js 和 user.js 中使用它。
例如:- 在 user.js 中执行此操作:
var router = require('express').Router();
var models = require("../models");
var elastic = require("./elastic");
router.get('/user/search', function(req, res) {
// Do search in elasticsearch
// elastic.es_client.search({......});
});