ElasticsearchのAPI呼び出し
Kibana pluginの中から呼び出す場合
const {callWithRequest} = server.plugins.elasticsearch.getCluster('data');
adminCluster.callWithRequest(req, 'ping');
こんな感じで例が書いてあります。
'ping'以外は、
https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/api-reference.html
に書いてある名前で呼び出せます。
他のAPIの呼び出し
Open Distroを入れているので、コンソールから
GET _opendistro/_security/authinfo
を実行するとログイン中のアカウント情報が取れます。
{
"user" : "User [name=pdev, roles=[], requestedTenant=__user__]",
"user_name" : "pdev",
"user_requested_tenant" : "__user__",
"remote_address" : "127.0.0.1:41076",
"backend_roles" : [ ],
"custom_attribute_names" : [
"attr.internal.testAttr"
],
"roles" : [
"DEVROLE",
"own_index"
],
"tenants" : {
"global_tenant" : false,
"pdev" : true,
"devtenant" : true
},
"principal" : null,
"peer_certificates" : "0",
"sso_logout_url" : null
}
これをPluginのなかで取得するには、どのFunction ?を使えばいいのか1週間くらい悩みました。
https://www.elastic.co/guide/en/elasticsearch/client/javascript-api/current/transport_request_examples.html
ここに client.transport.request()というものを使う例がありました。
というこで、以下のように呼び出せばいいようです。
API Referenceのところに書いておいてほしいな。。
const {callWithRequest} = server.plugins.elasticsearch.getCluster('data');
adminCluster.callWithRequest(req, 'transport.request', {
method: "GET",
path: "_opendistro/_security/authinfo"
});
Javascriptはまだまだ慣れない。