我在我的linux服务器上使用mongo-connector
pip install mongo-connector
python mongo_connector.py -m localhost:27217 -t http://localhost:9200
在我的本地node.js服务器内我使用的是我的linux服务器上托管的mongoDB
var Movie = require('../models/Movie');
var mongoosastic = require("mongoosastic");
var elasticsearch = require('elasticsearch');
movie = new Movie({title: 'Warrior'});
movie.save(function() {
console.log(arguments)
Movie.search({query:"Warrior"}, function(err, results) {
console.log(results);
});
});
模式
var mongoose = require('mongoose');
var elasticsearch = require('elasticsearch');
var mongoosastic = require("mongoosastic");
var movieSchema = new mongoose.Schema({
language: String,
year: String,
title: { type:String, es_indexed:true },
director: String
});
movieSchema.plugin(mongoosastic);
module.exports = mongoose.model('Movie', movieSchema);
我一直都没有定义。我认为数据已编入索引,但我无法搜索它。
测试
curl -XPUT 'http://localhost:9200/blog/user/dilbert' -d '{ "name" : "Dilbert Brown" }'
curl -XGET 'http://localhost:9200/blog/user/dilbert?pretty=true'
{
"_index" : "blog",
"_type" : "user",
"_id" : "dilbert",
"_version" : 1,
"found" : true,
"_source":{ "name" : "Dilbert Brown" }
}
问题可能是node.js托管在我的本地机器上,mongoDB / elasticsearch在我的linux服务器上。
答案 0 :(得分:1)
通过指出您的node.js和ES位于两个不同主机上的事实,您可能已经指出了这个问题。
查看命令行:
python mongo_connector.py -m localhost:27217 -t http://localhost:9200
-m
指向localhost端口27217上的Mongo数据库(除非该端口是到远程linux服务器的SSH隧道的入口)-t
指向复制端点(即本地计算机端口9200上的Elasticsearch)根据您的声明,Elasticsearch和MongoDB托管在您的远程Linux服务器上,您应该用您的Linux服务器的主机名或IP地址替换localhost
,并确保端口27217和9200在该服务器上打开主机。
然后你还应该确保你的Node.js和mongoosastic指向你的linux服务器,因为默认它使用localhost:9200
,即你的本地机器。所以请改用它并指向你的linux服务器:
movieSchema.plugin(mongoosastic, {
hosts: [
'your_linux_host:9200'
]
});
此外,您的mongoose连接也指向您的Linux服务器。
mongoose.connect('mongodb://your_linux_host/your_database');