服务器在端口3000上启动。
创建映射时出错[mapper_parsing_exception]没有用于类型的处理程序 在字段[类别]上声明的[string] :: {“路径”:“ /产品/ _映射/产品”,“查询”:{},“正文”:“ {\”产品\“:{\”属性\“:{\”类别\“:{\” type \“:\” string \“},\” name \“:{\” type \“:\” string \“},\” price \“:{\” type \“:\” double \“} ,\“ image \”:{\“ type \”:\“ string \”}}}}“,” statusCode“:400,” response“:” {\“ error \”:{\“ root_cause \”: [{\“ type \”:\“ mapper_parsing_exception \”,\“原因\”:\“否 在字段上声明的类型[string]的处理程序 [类别] \“}],\”类型\“:\” mapper_parsing_exception \“,\”原因\“:\”否 在字段上声明的类型[string]的处理程序 [类别] \“},\”状态\“:400}”}
已连接到数据库
索引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);
答案 0 :(得分:0)
在您要创建的映射中,您拥有类型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'
}