Моя схема выглядит следующим образом для 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 [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, ......}, координаты: [{type: Number, .....}]} 'Я думаю, что это типа и с типом. – gmaniac
, если бы я изменил 'geo: {type: {type: String, ......}, координаты: [{type: Number, .....}]}' to 'geo: {point_type : {type: String, ......}, координаты: [{type: Number, .....}]} 'у него нет проблем – gmaniac