Mongoosastic – {消息:'没有生活的连接'}

我试图使用mongoosasticsearch的目的,但我一直得到'没有生活的连接'错误和映射问题

这是代码

var mongoose = require('mongoose'); var mongoosastic = require('mongoosastic'); var Schema = mongoose.Schema; var JobSchema = Schema({ category: { type: Schema.Types.ObjectId, ref: 'Category', es_indexed:true}, title: { type: String, es_indexed:true }, }); JobSchema.plugin(mongoosastic); module.exports = mongoose.model('Job', JobSchema); 

routes.js

 var Job = require('../models/job'); Job.createMapping(function(err, mapping) { if (err) { console.log('error creating mapping (you can safely ignore this)'); console.log(err); } else { console.log('mapping created!'); console.log(mapping); } }); app.post('/search', function(req, res, next) { Job.search({query_string: {query: req.body.q}}, function(err, results) { if (err) return next(err); res.send(results); }); }); 

我不断收到这个错误,

在这里输入图像描述

任何有使用经验的人都可以告诉我,我该如何解决这个问题?

我也面临同样的问题,但我现在使用下面的方法解决

非常简单:您必须在本地或其他地方安装弹性search

  1. 下载弹性search http://www.elastic.co/downloads/elasticsearch
  2. 提取文件夹
  3. 从cmd或Treminal查找bin文件夹进入文件夹,并在该文件夹内运行弹性search脚本
  4. 而在默认情况下,在nodejs代码中,它将链接到localhost:9200,因此不需要使用新的elasticsearch.Client({host:'localhost:9200'}) ,但是如果你的弹性search在其他地方部署了,那么你必须使用上面的客户端方法

将插件添加到JobSchema模型时,您需要传递第二个参数以连接到Elasticsearch:

 JobSchema.plugin(mongoosastic, { hosts: [ 'localhost:9200' ] }); 

如果您准备好了一个,您也可以重新使用Elasticsearch客户端对象。

 var esClient = new elasticsearch.Client({host: 'localhost:9200'}); JobSchema.plugin(mongoosastic, { esClient: esClient }) 

我认为你必须创build一个客户端,并将其传递到插件,但使用IP地址是我的工作。

 // http://127.0.0.1:9200 == http://localhost:9200 var esClient = new elasticsearch.Client({host: 'http://127.0.0.1:9200'}); JobSchema.plugin(mongoosastic, { esClient: esClient }) 

注意:如果您以前没有使用elasticsearch,那么您可能需要重新编制文档索引(我不得不这样做,但是我可能做错了)

引用这个答案: https : //stackoverflow.com/a/30204512/1146562

从这个答案你可以直接将主机插入到插件,而不必创build客户端。