【问题标题】:How to inject the Elasticsearch service to Kibana controller?如何将 Elasticsearch 服务注入 Kibana 控制器?
【发布时间】:2018-08-01 20:36:29
【问题描述】:

我正在构建一个 Kibana 插件,它将代表用户查询 Elasticsearch。 official documentation 表示我可以使用来自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 模块。

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

我的想法不多了。预先感谢您提供有关如何从插件查询 Elasticsearch 的任何帮助。

【问题讨论】:

    标签: angularjs elasticsearch kibana


    【解决方案1】:

    使用 esResponse,看看 Tim roes kibana plugin tutorial

    【讨论】:

    • 感谢您的资源。由于我既没有构建可视化,也没有使用TemplateVisType 服务,所以我的范围内没有esResponse。在 Tim 的教程中,这一切都是关于将数据交给 TemplateVisType,它会自动为我查询 Elasticsearch。然而,我想要做的是启动一个自定义查询。
    【解决方案2】:

    您必须将 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-28
      • 1970-01-01
      • 2017-01-07
      • 1970-01-01
      • 1970-01-01
      • 2013-05-28
      • 1970-01-01
      相关资源
      最近更新 更多