0
我的架構看起來像這樣的mongoose
:Mongoosastic地理空間架構映射
var LocationSchema = new Schema({
id: ObjectId,
geo: {
type: {
type: String,
required: true,
enum: ['Point', 'LineString', 'Polygon'],
default: 'Point'
},
coordinates: [{
type: Number,
es_lat_lon: true,
es_type: 'geo_point'
}]
}
});
然後,添加mongoosastic
插件mongoose
啓動模式並創建映射mongoosastic
var esClient = new elasticsearch.Client({
host: config.es_url,
requestTimeout: Infinity,
keepAlive: true
});
LocationSchema.plugin(mongoosastic, { esClient: esClient })
var Location = mongoose.model('Location', LocationSchema);
/**
* mongoosastic create mappings
*/
Location.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);
}
});
現在我得到這個錯誤[Error: MapperParsingException[No handler for type [{default=Point, enum=[Point, LineString, Polygon], required=true, type=string}] declared on field [geo]]]
日誌中的完整錯誤:
{
[Error: MapperParsingException[No handler for type [{default=Point, enum=[Point, LineString, Polygon], required=true, type=string}] declared on field [geo]]]
status: '400',
displayName: 'BadRequest',
message: 'MapperParsingException[No handler for type [{default=Point, enum=[Point, LineString, Polygon], required=true, type=string}] declared on field [geo]]'
}
我的問題是我這樣做完全錯誤還是我只是想念一些小事?我這樣做的方式適用於mongoose
,只有mongoosastic
有問題,我明白爲什麼,但我不能第一個遇到這個問題(爲什麼mongoosastic
有問題是因爲它看到type
,並沒有指望它有一種類型 - 至少這是我認爲它有麻煩)。
我仍然得到同樣的錯誤。 – gmaniac
這麼長時間後再看這個我想我知道現在是什麼。我不認爲''mongoosastic''喜歡'geo:{type:{type:String,......},coordinates:[{type:Number,.....}]}'我認爲這是類型和具有類型。 – gmaniac
就是這樣,如果我將'geo:{type:{type:String,......},座標:[{type:Number,.....}]}'改爲'geo:{point_type :{type:String,......},座標:[{type:Number,.....}]}'沒問題 – gmaniac