Итак, проект состоит из следующего стека, NodeJS, Express, Mongodb, ElasticSearch.Для индексации к упругому поиску мы используем плагин mongoosastic.
У меня есть следующие модели, которые имеют отношение 1: M между собой, и всякий раз, когда я обновляю группу, я хочу, чтобы группа обновлялась в объекте пользователя.также.Поэтому, если я обновляю группу, она просто обновляется в индексе группы в ElasticSearch, а не в индексе пользователя.Но если я затем обновлю пользователя, объект группы будет актуализирован правильно.Это должно быть что-то с es_type и es_include_in_parent, но все просто не работает в любом случае.
const UserSchema: mongoose.Schema = new mongoose.Schema({
email: String,
password: String,
group: {
type: mongoose.Schema.Types.ObjectId,
ref: 'groups',
es_indexed: true,
es_type: 'nested',
es_include_in_parent: true
}
}, { timestamps: true } as SchemaOptions);
UserSchema.plugin(mongoosastic, {..elasticSearchConfig,
index: 'users',
populate: [
{path: 'group', model: 'groups'}
]}
);
export const UserModel = mongoose.model('users', UserSchema, 'users');
и
export const GroupSchema: mongoose.Schema = extendBaseSchema(new mongoose.Schema({
name: { type: String, es_indexed: true },
web: { type: String, es_indexed: true },
users: [
{
type: mongoose.Schema.Types.ObjectId,
ref: 'users',
es_indexed: true,
es_type: 'nested',
es_include_in_parent: true
}
],
}));
GroupSchema.plugin(mongoosastic, {...elasticSearchConfig,
index: 'groups'
});
export const GroupModel = mongoose.model('groups', GroupSchema, 'groups');
Заранее спасибо!