基本上我每隔几秒就会有多个日志条目进入elasticsearch。我正在尝试编写一个实时流式日志查看器,可以在最近的20个日志中每2秒轮询一次弹性搜索。
我遇到的问题是我每次轮询时都会返回相同的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的新手,现在已经把头撞到了墙上一天。