我需要更新用户信息并在更新后获取更新用户信息。这两个查询都有效。但是当我在更新查询后立即调用/ get时,它不会获取更新的信息。当我将2ms的超时时间正确地获取更新的信息。我是弹性搜索的新手,我不知道它的缓存更新信息,是否有任何方法可以立即获取查询中的更新信息?
更新查询
var user = {};
user.first_name = "John updated"
db.update({
index: config.index_name,
type: 'user',
id: req.body.user_id,
body: {
doc: user
}
}, function (err, resp) {
if (err) {
return next(err);
}
db.search({
index: config.index_name,
type: 'user',
body: {
"query": {
"match": {
"_id": req.body.user_id
}
}
}
}, function (err, resp) {
if (err) {
return next(err);
}
var data = {};
data.creator_name = resp.hits.hits[0]._source.first_name
// Here am not getting update first name "John updated" instead of getting John
});
});
非常感谢您的帮助。谢谢。
答案 0 :(得分:1)
您可以使用此处所述的Refresh
参数:
http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-update.html
这将确保更新的文档立即在搜索结果中可用。
希望这有帮助!