I wish to develop a Kibana App to act as an input to Elasticsearch.
I am willing to invest time and effort in understanding the technology stack needed to develop this App. I have browsed through majority of the apps mentioned here:
I found that majority of them use Angular. I have some basic front-end development experience, however, I have never worked on angular or node extensively.
Majority of the development by me has been carried out in python. I read a post somewhere where they mentioned that Kibana is planning to move to React in the long term, would it make sense to focus on learning React?
Can someone help out with what technologies should I learn (Any particular order) in order to develop the plugin?
Please ignore any foolish mistakes or assumptions I might have made in this post.
Yes. I have gone through the doc. I figured out that the technology used would be angular or react from these docs only. But the challenge is the docs cover visualization creation extensively and do not cover creating your own apps for kibana that well.
Hence this post. I tried the freenode irc, but could not get much response there as well.
So I might have made some progress with this. Here are a few bullet points that outline my current understanding of Kibana plugins:
Kibana Apps are SPA (Single Page Applications) developed using either Angular or React.
The Kibana team is planning to move away from Angular and towards React. This was evident from the following posts/discussions on Git.
With Kibana v6.3 a kibana plugin generator has been added. This can be used as a reference to create React-based plugins, as evident from the following discussions:
An EUI library is now available to ensure better code sharing between Kibana and its plugins. Documentation or usage example for it is sadly missing.
What is still however not clear or missing for me is the way to interact with Elasticsearch from within the plugin/app. I can definitely use the Elasticsearch.js client library and hard-code the config or add a json config in the plugin folder. But I do not think it is the ideal way and getting the config from kibana.yml should definitely be possible. Anyone with some experience in that particular setting, please update me about the same.
import React from 'react';
import 'ui/autoload/styles';
import 'plugins/kbn_vislib_vis_types/kbn_vislib_vis_types';
import './less/main.less';
import { AppConstants } from './config/AppConfig';
import { render } from 'react-dom';
import chrome from 'ui/chrome';
import App from './app/App';
import { Provider } from 'react-redux';
import configureStore from './store';
chrome.setRootTemplate(′<div id="root" class="${AppConstants.APP_NAME}"></div>′)
.setRootController(() => {
// Mount the React app
const el = document.getElementById('root');
const store = configureStore();
render(
<Provider store={store}>
<App/>
</Provider>
, el);
});
And then, you can implement all, what you wish with react. But, as I understand, we can't use React Router in plugin. If anybody know, how to do this - please write an example
Apache, Apache Lucene, Apache Hadoop, Hadoop, HDFS and the yellow elephant
logo are trademarks of the
Apache Software Foundation
in the United States and/or other countries.