什么是 Elasticsearch 中的 River?为什么现在不推荐使用 River?

Sherwin.Wei Lv8

什么是 Elasticsearch 中的 River?为什么现在不推荐使用 River?

回答重点

Elasticsearch 中的 River 是一个用于从外部数据源(如 MySQL、MongoDB、Twitter 等)导入数据到 Elasticsearch 的插件。它可以自动地从指定的数据源获取数据并索引到 Elasticsearch 中。早期,River 是 Elasticsearch 提供的一种常见的数据导入方法。

但是,现在 River 不再推荐使用了,主要原因有以下几点:

1)安全性问题:River 插件需要有访问外部系统的权限,这带来了一定的安全风险,如果配置不当可能让恶意用户有机会注入恶意数据。
2)灵活性和可扩展性问题:River 运行在 Elasticsearch 节点上,这会增加节点负载,影响集群的性能。还有,它本身的功能及配置较为局限。
3)后续维护问题:Elasticsearch 团队停止了对 River 插件的维护和更新,也就是说,新的 Elasticsearch 版本中可能不再兼容 River 插件。

扩展知识

1)替代方案

  • Logstash:这是一个由 Elastic 提供的数据收集引擎,Logstash 可以处理几乎所有格式和类型的数据,并将其发送到 Elasticsearch。
  • Beats:一种轻量级的数据传送工具,尤其适合将日志、指标等数据发送到 Elasticsearch。
  • 自定义工具/脚本:你可以使用编程语言(如 Python、Java 等)编写脚本,调用 Elasticsearch 的 RESTful API 进行数据导入。

2)安全性方面的改进

  • 使用 Elasticsearch 的内置安全功能,如角色和权限管理,确保只有经过授权的用户才能访问相关数据。
  • 利用 Logstash 和 Beats 的安全配置选项,如安全传输层(SSL/TLS)以及用户认证,确保数据传输的安全性。

3)性能优化

  • 数据分片和索引优化:在导入数据之前,可以合理规划索引的分片(shards)和副本(replica),提高数据存储和查询的性能。
  • 批量操作:通过 Logstash 或定制的脚本,使用批量 (bulk) 操作将数据导入 Elasticsearch,可以显著提高处理效率。
Comments
On this page
什么是 Elasticsearch 中的 River?为什么现在不推荐使用 River?