如何将 Elasticsearch 服务注入 Kibana 控制器



我正在构建一个 Kibana 插件,它将代表用户查询 Elasticsearch。官方文档说我可以使用 kibana 模块中的 es 服务。

uiModules
.get('app/demo', ['kibana'])
.controller('demoController', function ($scope, esAdmin, es) {
  es.ping()
  .then(() => esAdmin.ping())
  .catch(err => {
    console.log('error pinging servers');
  });
});

但是,该插件无法启动并显示以下错误:

Error: [$injector:unpr] Unknown provider: esAdminProvider <- esAdmin <- demoController

似乎es服务未注册到kibana模块。

然后我尝试复制控制台的工作方式。它不使用Elasticsearch服务,而是在服务器上创建一个代理API。但是,我不知道控制台如何使用用户的身份验证信息调用代理 API。

我的想法快用完了。提前感谢您有关如何从插件查询 Elasticsearch 的任何帮助。

使用 esResponse,看看 Tim roes kibana 插件教程

您必须将 elasticsearch 模块添加到模块的需求中。尝试:

uiModules
.get('app/demo', ['kibana', 'elasicsearch'])
.controller('demoController', function ($scope, esAdmin, es) {
  es.ping()
  .then(() => esAdmin.ping())
  .catch(err => {
    console.log('error pinging servers');
  });
});

值得注意的是,这似乎适用于可视化而不是黑客。es和esAdmin的功能似乎受到限制。如果你需要进行他们不支持的 elasticsearch 调用,你必须创建一个自定义的服务器端点,并从那里使用 elasticsearch。

最新更新