可不可以对Text字段解析后再做聚合?

发布于 2022-09-12 02:49:20 字数 822 浏览 30 评论 0

在我们的场景中,使用ES存储各种请求接口的日志,像时间戳、客户端IP、请求接口、处理结果(错误码)等这些信息是固定格式的,可以设计一个特定索引来存储

不同的请求接口,具体请求的内容不同,因为现在是将多种请求放到一起,所以对于请求的内容目前是使用一个text字段来存储的
比如某种请求A的请求体内容是这样的

{users=[{name=zhangsan, age=10, address=杭州}, {name=lisi, age=18, address=上海}], city=[{name=杭州, desc=西湖}, {name=上海, desc=黄浦江}]}

这个信息存储在text类型的loginfo字段

现在有这样一个需求,通过Filter将所有的请求A的数据过滤出来,然后针对loginfo字段想做解析后再聚合,实现类似这样的效果

  • 用户1在10:00:00到12:00:00这个时间段内请求的次数
  • 用户1在10:00:00到12:00:00这个时间段内请求的成功率
  • 等等

目前我搜索到的信息是这样的,text类型的字段不支持聚合

所以我现在想到的方案是,在收到类似上面原始日志内容的时候,将不同的请求放到不同的索引中存储

针对每种请求自己的loginfo内容,对loginfo做解析,解析出想要的字段,存储为keyword类型

然后就可以针对这些keyword完成上面的这些需求了

但是我这里想问的是,ES、Kibana有没有原生的工具,先对loginfo做拆解,然后对拆解后的字段做聚合?

这样的话,直接在ES、Kibana中就可以对text的字段做解析和聚合了

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

哭泣的笑容 2022-09-19 02:49:21

只要不同接口格式不冲突(比如,同一个key不要有不同的数据类型),key 的总数不是太多(1000?),都解析出来放一起是没有问题的。

而且,你总是可以把不同的接口数据放在不同的 index 里的。

json parse 的事应该在 ES 之前搞定,到了 ES 都还是 string ,就没啥办法了 ...

尹雨沫 2022-09-19 02:49:21

elk 日志查询系统?

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文