2016-12-05 54 views
1

有人请告诉我为什么不同步我的mogoosastic和mongodb? 当我从mongoDB中删除记录时,仍然可以看到记录,直到服务器重新启动。这是我的搜索功能当从mongoDB删除记录时,弹性体不与其同步

exports.search = function (req, res) { 
    if (!req.query.q) return res.status(400).send('No Query Provided') 
    log.error(req.query.q) 

    var query = { 
    query_string: { 
     filtered: { 
     query: { 
      multi_match: {query: req.query.q,} 
     }, 
     filter: {term: {isDeleted: false} 
     } 
     } 
    } 
    } 

    User.search(query, (err, results) => { 
    if (err) return handleError1(res, err) 
    var ret = _.map(results.hits.hits, result => ({ 
     userID: result._id, 
     _score: result._score, 
     name: result._source.name, 
     loc: result._source.loc, 
     info: result._source.info, 
     images: result._source.images, 
    })) 
    return res.send(ret) 
    }) 
} 

而这一个是我的架构声明

isDeleted: {type: Boolean, required: true, default: false, es_indexed: true} 

什么是错的这个代码...

+0

如何删除文档?请提供删除代码 – Paradise228

回答

0

我加入这行代码,一切都OK

.then(groups => { 
     return User.findById(uid).exec() 
    }) 
    .then(user => { 
     let email = user.credentials.loginEmail + '_' + moment().format('YYYYMMDDEHHmmss') 
     if(app.get('env') === 'localtest') { 
     email = user.credentials.loginEmail + '_deleted' 
     } 
     user.credentials.loginEmail = email; 
     user.isDeleted = true; 
     user.updated.at = new Date(); 
     user.save() 
     .then(user_ =>{ 
      user.sendInfoUpdate() 
      return res.status(204).send() 
     }) 
     .catch(err => { 
      return handleError(res, err) 
     }) 
    }) 
    .catch(err => { 
     return handleError(res, err) 
    })