1

我正在开发 Kibana (7.5.2) 的自定义插件。该插件的类型为“app”。我希望能够将参数传递给这个插件,以便从 Elasticsearch 预加载一些数据。即,我需要为用户提供一些包含参数的特定 URL,插件将使用这些参数仅显示数据的相关部分。

我的问题是我无法找到足够的文档,我不知道正确的方法应该是什么。我将尝试总结到目前为止我所知道/所做的事情:

  1. 我已经阅读了关于插件开发的官方资源

  2. 我知道_g_a URL 参数用于在 Kibana 应用程序中传递状态。但是,a)我不确定这是否是我的情况的正确方法,并且 b)我也找不到任何关于我的插件应该如何从这些参数访问数据的信息。

  3. 我检查了其他已知插件的来源,但同样未能找到任何线索。

  4. 我可以在我的插件( )injectUiAppVars的方法中注入一些配置值,并在我的应用程序()中检索这些值:initindex.jsmain.js

    index.js:


export default function (kibana) {
 return new kibana.Plugin({
   require: ['elasticsearch'],
   name: ...,
   uiExports: {
     ...
   },

   ...

   init(server, options) { // eslint-disable-line no-unused-vars
     server.injectUiAppVars('logviewer', async () => {
       var kibana_vars = await server.getInjectedUiAppVars('kibana');
       var aggregated_vars = { ...kibana_vars, ...{ mycustomparameter: "some value" } }
       return aggregated_vars
     });

   ...
   }
 });
}

main.js

   import chrome from 'ui/chrome';
   . . . 
   const mycustomparameter = chrome.getInjected('mycustomparameter');

假设我设法从 URL 获取参数,这将允许我将它们传递给我的应用程序(通过mycustomparameter),但同样,我不确定这种方法是否正确。

  1. 我试图通过 Elastic 论坛寻求帮助,但尚未收到任何答复。

我的问题 1. 有没有关于这个特定主题的信息来源?我知道插件 API 经常更改这一事实,因此我不希望找到大量文档。也许是一个很好的例子?

  1. 我是否完全偏离了我试图实现它的方式?

感谢您阅读本文,任何帮助将不胜感激!

4

0 回答 0