这是我的node.js,mongoosastic搜索功能:
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: {query: req.query.q}};
var filterDeleted = {
term: {
isDeleted: true
}
};
User.search(query, {filter: filterDeleted}, (err, results) => {
if (err) return handleError(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)
})
}
通过这一切,我想问一下弹性“给所有用户匹配req.query.q,其中 isDelete属性为false(未删除)。 实际上这不起作用,据我所知,它忽略了过滤器并继续前进。所以它也显示了已删除的用户。 请有人帮我找到解决方案。
答案 0 :(得分:0)
所以通过像这样修改代码来解决问题
exports.search = function (req, res) {
if (!req.query.q) return res.status(400).send('No Query Provided')
log.error(req.query.q)
User.search({query_string: {query: req.query.q}}, (err, results) => {
if (err) return handleError(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)
})
}