服务器在端口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中已弃用。您需要改用textkeyword

您的映射应如下所示:

{
  "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/

10-09 20:44