ELK 6.2.2中自定义索引未在Kibana索引模式显示的问题求助
排查ELK 6.2.2中自定义索引未在Kibana索引模式显示的问题
看起来你在升级到ELK 6.2.2后遇到了自定义索引不显示在Kibana的情况,我来帮你一步步排查可能的原因:
1. 先确认索引是否真的在Elasticsearch中存在
这是最基础的一步,别先盯着Kibana看,先确认ES里有没有你的索引:
- 用curl命令(或Postman等工具)连接ES,列出所有索引:
curl -u your-username:your-password -XGET http://your-es-host:9200/_cat/indices?v - 如果输出里找不到你的自定义索引,说明问题出在索引创建环节:
- 检查elastic-py创建索引的代码是否执行到了,有没有抛出异常(可以在代码里加日志或者try-except捕获错误)
- 确认你的ES账号有创建索引的权限(X-Pack默认的
superuser角色肯定有,如果是自定义角色,要确保包含create_index权限)
2. 检查Kibana的索引模式筛选设置
如果ES里确实有你的索引,但Kibana看不到:
- 打开Kibana的【Index Patterns】页面,先在输入框里输入你索引的完整名称(比如
your-index-name),而不是默认的*,看看能不能匹配到 - 如果还是看不到,检查索引是否包含Kibana默认要求的时间字段:
- Kibana默认会筛选出包含时间字段的索引(因为默认勾选了"Index contains time-based events")。如果你的索引里没有符合要求的时间字段,或者
date字段的格式不匹配,Kibana可能不会显示它 - 你可以尝试创建索引模式时,取消勾选"Index contains time-based events",再输入索引名称,看看能不能找到它
- 另外,确认你的
date字段在ES里确实是date类型:用下面的命令查看字段类型:
输出里应该能看到curl -u your-username:your-password -XGET http://your-es-host:9200/your-index-name/_mapping/example_local?prettydate字段的type是date,且格式正确。如果格式不对,ES可能把它识别成字符串,导致Kibana无法识别为时间字段。
- Kibana默认会筛选出包含时间字段的索引(因为默认勾选了"Index contains time-based events")。如果你的索引里没有符合要求的时间字段,或者
3. 检查索引的状态和权限
- 确保你的索引是open状态:在
_cat/indices的输出里,status列应该是open,如果是close,执行下面的命令打开:curl -u your-username:your-password -XPOST http://your-es-host:9200/your-index-name/_open - 检查Kibana使用的账号是否有读取该索引的权限:在X-Pack的【Management】->【Users】里,查看Kibana用户的角色,确保角色包含该索引的
read权限(可以在【Roles】里给角色添加indices:*/your-index-name/*的权限)
4. 刷新Kibana的索引缓存
有时候Kibana会缓存索引列表,需要手动刷新:
- 在Kibana的【Index Patterns】页面,点击右上角的Refresh按钮(看起来像个循环箭头),等待几秒后再看索引列表
额外的注意点(和你的mapping调整相关)
你把旧的string类型改成text是对的,因为ES 6.x已经移除了string类型,分成了text(用于全文搜索)和keyword(用于精确匹配、聚合)。如果之后你需要对action或user_type做精确过滤或聚合,建议给它们加上keyword子字段,比如:
'action': {'type': 'text', 'fields': {'keyword': {'type': 'keyword', 'ignore_above': 256}}}, 'user_type': {'type': 'text', 'fields': {'keyword': {'type': 'keyword', 'ignore_above': 256}}},
不过这个不影响索引在Kibana的显示,只是后续使用的优化。
内容的提问来源于stack exchange,提问作者Madox
相关产品推荐
相关产品推荐

