基本上,我每隔几秒钟就有多个日志条目进入弹性搜索。我正在尝试编写一个实时流日志查看器,该查看器每隔 2 秒轮询一次弹性搜索,以获取最近的 20 条日志。
我遇到的问题是每次我轮询时都会返回相同的 20 条日志,但它们甚至不是 20 条最新的日志。这是我目前正在做的事情。
var elasticsearch = require('elasticsearch');
var client = new elasticsearch.Client({
host: "host"
});
router.get('/poll/', function (req, res) {
var service = req.body.service;
var logs = [];
var index = 'logstash-'+dateFormat(new Date(), "yyyy.mm.dd");
client.search({
index: index,
size: 20,
_sort: "@timestamp",
body: {
query: {
query_string: {
query: "dockerd",
fields: ["SYSLOG_IDENTIFIER"]
}
}
}
}).then(function (resp) {
resp.hits.hits.forEach(function(hit) {
logs.push(hit);
});
res.end(JSON.stringify(logs));
}, function(err) {
console.log(err.message);
});
});
我在这里尝试做的是根据时间戳按降序对日志进行排序并返回其中的 20 个。这应该总是返回最新的条目吧?
对此问题的任何帮助将不胜感激。我是使用 elasticsearch api 的新手,并且已经将我的头撞到墙上一天了。