elasticsearch - 发现 Elasticsearch 的历史趋势(非可视化)
问题描述
我在使用 Elastic 作为日志存储方面有一些经验,但随着时间的推移,我一直坚持基本的趋势识别(我需要将找到的文档相互比较)。
简单查询将回答以下问题:
查找所有出现的文档行(行由增长/继续@timestamp 值指定),其中特定字段(例如threads_count)对于固定的文档计数或时间段正在增长。
- 因此,如果我有某个应用程序的 thread_count,则在一天内每分钟记录一次,包括时间戳。我指定我正在寻找 10 分钟内的增长趋势 - 结果应该返回至少 10 个文档的 thread_count 大于文档一分钟前的文档或文档集。
查看折线图并通过肉眼识别生长部分是非常相似的任务。
也许我只是错过了正确的搜索功能名称。我对可视化不感兴趣,我想通过 API 搜索类似的情况并采取必要的措施。
欢迎任何参考文档或简单示例!
解决方案
Well script 不能在文档之间使用。因此,您将不得不使用有效载荷。
在您的查询中按日期对结果进行排序。
https://www.elastic.co/guide/en/elastic-stack-overview/6.3/how-watcher-works.html
有效负载中的脚本可以告诉您字段是否正在增加(类似这样,现在无法访问 es 索引)
"transform": {
"script": {
"source": "ctx.payload.transform = []; def current_score = -1;
def current = []; for (int j=0;j<ctx.payload.hits.hits;j++){
//check in the loop if current_score increasing using ctx.payload.hits.hits[j]._source.message], if not return "FALSE"
} ; return "TRUE",
"lang": "painless"
}
}
如果您使用 logstash 来索引您的文档,看看 elapsed,也可能很好:https ://www.elastic.co/guide/en/logstash/current/plugins-filters-elapsed.html
推荐阅读
- ruby-on-rails - 是否/为什么 Rails 6 仍在使用/推荐 CoffeeScript?
- javascript - 当我点击页面上的某个块时,我需要更改我的网址
- ruby - 用于更新 url 和包标识符的 Fastlane 命令
- php - 有没有办法对数组进行子串化?
- javascript - How to remove touch offset on webpage?
- java - Android PlaceAutocompleteFragment 自动关闭
- sql-server - 在使用 INSERT 触发器后向 INSERTED 表添加值
- python-3.x - 如何在带有 asyncio 的 pyzmq 中使用 REQ 和 REP?
- javascript - 过滤值列表
- ruby - 使 Ruby 对象响应双 splat 运算符**