先说一下业务场景:本人当前做的这个项目会收集公司所有应用的日志,日志存储在ES中,只保留N天,不同应用的日志会存储在不同的index中并且index按天拆分。提供了界面让应用的开发人员查看自己应用的日志,后续还会有新的应用加入。
想要做到什么样呢?
管理界面上嵌入kibana的页面,选择不同应用,查看不同应用的日志,但是kibana的查询参数不会出现类似于appName:xxx
这样的字段,也就是说不用应用之间的参数差异对于开发人员是不可见的,想要做到对开发人员透明这就需要在查询的时候根据appName
动态的指定index(不同应用查询不同的index)。
在Kibana4中取消了对于模板和脚本的支持,使得没办法在查询的时候指定使用的index(kibana3中可以使用模板做到这一点)。然而在Kibana4中增加了index pattern
,index pattern
被用来限定查询的index范围,举例来说如果你的search
使用的index pattern
是logstash-*
,那么使用search
的时候,只会在以logstash-
开头的index上查询(具体可以参考官方介绍)。
这样为查询时指定index提供了一条明路,可惜的是如果你指定的index pattern
不存在,那么Kibana会使用默认的。当然,你可以事先创建好你想使用的index pattern
,这样一来就需要修改你原先的代码,系统中新增应用的时候就需要多一步操作了。这个办法也还可