与Elasticserach 通信

优质
小牛编辑
124浏览
2023-12-01

官方文档推荐

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

服务器客户端

在服务器端可以通过以下方式获取:

  const adminCluster = server.plugins.elasticsearch.getCluster('admin');
  const dataCluster = server.plugins.elasticsearch.getCluster('data');

  //ping as the configured elasticsearch.user in kibana.yml
  adminCluster.callWithInternalUser('ping');

  //ping as the user specified in the current requests header
  adminCluster.callWithRequest(req, 'ping');

浏览器客户端

浏览器客户端可以通过AngularJS services获取:

uiModules.get('kibana')
.run(function (es) {
  es.ping()
  .catch(err => {
    console.log('error pinging servers');
  });
});

非官方文档推荐

Why

为什么 官方未推荐,我在这里还介绍了,主要是因为以下原因:

  1. 用这种方式可以很好的debug, 可以单独运行。
  2. 官方文档较全。

服务器客户端

首先引入依赖包

const elasticsearch = require('elasticsearch');

server 端初始化调用文件中可以按如下使用:

  const client = new elasticsearch.Client({
    host: config.get('elasticsearch.url'),
    requestTimeout: 120000
    //log: 'trace'
  });
client.indices.stats({
  human: true,
  fields: ['docs', 'store']
  }, function (err, response) {
  console.log(response);
  });
}