文章目录
- 不能自动补全index?
- 不能自动补全field?
不能自动补全index?
当用户在 kibana 的 Dev Tools 页面手写查询时,理应可以自动补全 index 的名称,如下图:
如果不能自动补全,则点击 Settings ,看自动补全功能是否勾选上了:
如果勾选上了,却依然不能自动补全,则开浏览器的 F12 窗口,重新加载 kibana 网页,查看 HTTP 请求是否成功。如下图:
原理:kibana 的 Dev Tools 页面第一次加载时,会自动从 ES 获取所有 index 及 alias 名称列表、所有 index mappings、所有 _template 名称列表。这样才能在用户手写查询语句时,自动补全。
如果 HTTP 请求请求失败,大概率是当前用户的权限不足。
例如 kibana v7 版本重新划分了权限策略,对于 _template 没有只读策略,只有写策略。因此用户没有写权限,就不能获取 _template 名称列表,导致不能自动补全。用户需要提升权限,或者在 Settings 中取消自动补全 _template ,避免阻碍自动补全 _alias 。
不能自动补全field?
当用户在 kibana 的 Dev Tools 页面手写查询时,理应可以自动补全 field 字段名称(字段的值不能自动补全),如下图:
如果不能自动补全field,则开浏览器的 F12 窗口,重新加载 kibana 网页,查看 HTTP 请求是否成功。如下图:
本文再列举其它几个可能的原因:
-
kibana v7.0 版本破坏了 autocomplete 功能,直到 v7.10 才修复。参考:https://github.com/elastic/kibana/pull/85509
-
kibana v7.x 版本限制了全部 index mappings 的体积不能超过 10MB ,否则不会处理。源代码如下:
https://github.com/elastic/kibana/blob/1796b5ec8fa1e60ccea63f2e5c25ccc665b92fdc/src/plugins/console/public/lib/mappings/mappings.js#L312
如果超过 10MB ,在浏览器的 F12 控制台可以看到报错:
Mapping size is larger than 10MB
如下图:
直到 kibana v8.5 才删除了这段前端代码:
https://github.com/elastic/kibana/commit/3db77af5d7066697635ad3e1eeeae81a92ae9711