Плагин Mongoosastic не обновляет вложенные объекты - PullRequest
0 голосов
/ 09 октября 2018

Итак, проект состоит из следующего стека, 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');

Заранее спасибо!

1 Ответ

0 голосов
/ 04 апреля 2019

Добавьте параметр es_schema, например, должен решить вашу проблему.

es_schema:User.schema 
...