【发布时间】:2017-03-24 17:38:16
【问题描述】:
这是我的 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)
})
}
通过这一切,我想问 elastics “给所有匹配 req.query.q 的用户,他们的 isDelete 属性为 false(未删除)。 实际上这不起作用,据我了解,它忽略了过滤器并继续前进。所以它也会显示已删除的用户。 请有人帮我找到解决方案。
【问题讨论】:
-
可以发布生成的 JSON 请求吗?
-
对不起,但不应该在代码
isDeleted=false? -
先生。当然,我尊重您的意见,但是如果我想过滤所有已删除的用户,而不是通过响应发送。
-
虽然我也尝试过相反的方法,但还是一样(不起作用)。
-
也许尝试将过滤器嵌套在
query正文的inside 中,如here
标签: node.js elasticsearch mongoose