服务器在端口3000上启动。
连接到数据库
已索引120个文件
//码
Product.createMapping(function(err, mapping){
if(err){
console.log("Error creating mapping"+ err);
}else{
console.log("Mapping Cretaed");
console.log(mapping);
}
});
var stream = Product.synchronize();
var count = 0;
stream.on('data', function(){
count++;
});
stream.on('close', function(){
console.log("Indexed " + count + "documents");
});
stream.on('error', function(err){
console.log(err);
});
添加了新代码以说明什么是产品
var mongoose = require("mongoose");
var Schema = mongoose.Schema;
var mongoosastic = require("mongoosastic");
//Schema
var ProductSchema = new Schema({
category : {
type : Schema.Types.ObjectId,
ref : 'Category'
},
name : String,
price : Number,
image : String
});
ProductSchema.plugin(mongoosastic, {
hosts : [
'localhost:9200'
]
})
module.exports = mongoose.model('Product', ProductSchema);
最佳答案
在您尝试创建的映射中,您有一个string
类型,在ES 5.x中已弃用。您需要改用text
或keyword
。
您的映射应如下所示:
{
"product": {
"properties": {
"category": {
"type": "keyword"
},
"name": {
"type": "text"
},
"price": {
"type": "double"
},
"image": {
"type": "text"
}
}
}
}
更新:
该问题来自以下事实:截至2018年6月26日,mongoosastic 4.4.1 doesn't support ES5。一种解决方法是像这样修改您的mongo模式
category: {
type: String,
es_type: 'keyword'
}
price: {
type: Number,
es_type: 'double'
}
name: {
type: String,
es_type: 'text'
}
image: {
type: String,
es_type: 'text'
}
关于node.js - ElasticSearch上的mapper_parsing_exception错误,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51010008/