node.js - Mongoosastic 插件不更新嵌套对象

标签 node.js mongodb elasticsearch mongoose mongoosastic

所以该项目由下一个堆栈组成,NodeJS、Express、Mongodb、ElasticSearch。为了对 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');

提前致谢!

最佳答案

添加参数es_schema,例如应该可以解决你的问题。

es_schema:User.schema 

关于node.js - Mongoosastic 插件不更新嵌套对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52717000/

相关文章:

node.js - 异步运行三个函数并等待三个函数完成

node.js - 如何使用调试符号制作node-waf构建二进制文件?

Spring Data MongoDB,如何设置SSL?

elasticsearch - 我如何使用 Homebrew 软件安装Elasticsearch 1.2.1

node.js - Node JS Canvas 图像数据

node.js - Lambda 执行在异步事件完成之前退出

java - Spring Data MongoDB 排序性能

mongodb - mongocli 是否支持 Apple M1 芯片的公式 URL?

elasticsearch - kibana 4.0 中比率的趋势

Elasticsearch:可以处理聚合结果吗?