与ElasticSearch通信API

官方文档推荐

Kibana在服务器和浏览器上公开两个客户端,以与Elasticserach进行通信。有一个管理客户端用于管理集群的状态,以及一个数据客户端

服务器客户端

在服务器端可以通过以下方式获取:
1
const adminCluster = server.plugins.elasticsearch.getCluster('admin');
2
const dataCluster = server.plugins.elasticsearch.getCluster('data');
3
4
//ping as the configured elasticsearch.user in kibana.yml
5
adminCluster.callWithInternalUser('ping');
6
7
//ping as the user specified in the current requests header
8
adminCluster.callWithRequest(req, 'ping');
Copied!

浏览器客户端

浏览器客户端可以通过AngularJS services获取:
1
uiModules.get('kibana')
2
.run(function (es) {
3
es.ping()
4
.catch(err => {
5
console.log('error pinging servers');
6
});
7
});
Copied!

非官方文档推荐

Why

为什么 官方未推荐,我在这里还介绍了,主要是因为以下原因: 1. 用这种方式可以很好的debug, 可以单独运行。 2. 官方文档较全。

服务器客户端

首先引入依赖包
1
const elasticsearch = require('elasticsearch');
Copied!
server 端初始化调用文件中可以按如下使用:
1
const client = new elasticsearch.Client({
2
host: config.get('elasticsearch.url'),
3
requestTimeout: 120000
4
//log: 'trace'
5
});
6
client.indices.stats({
7
human: true,
8
fields: ['docs', 'store']
9
}, function (err, response) {
10
console.log(response);
11
});
12
}
Copied!