从Elasticsearch导入/导出数据的最佳方法使用Java客户端

时间:2016-07-14 18:10:59

标签: java search elasticsearch

我正在向elasticsearch中提取数百万条记录,并从elasticsearch中提取记录。我正在使用elasticsearch java客户端。我在每个JVM上只创建一个客户端。使用此客户端,将数据提取到elasticsearch中  使用相同的方法从elasticsearch中提取数据。提取的数据写入文件并进行一些分析,再次写入文件并使用数据将数据导入弹性搜索。

1)这是在一个JVM上只创建一个Java客户端并使其保持活动状态的最佳方法吗?

2)或在需要时创建客户端并提取/提取数据,关闭它。

3)或者创建客户端池并重用它。(比如连接池)

这样做的最佳方式是什么?

1 个答案:

答案 0 :(得分:1)

这是一个非常好的问题,但根据我在真正可扩展和庞大的 Elasticsearch 系统方面的经验,我在单个 JVM 中没有看到超过一个 ES 客户端,这些客户端是单例和线程安全的,出于以下原因,您也应该坚持使用到每个 JVM 的单个 ES 客户端。

  1. 出于性能原因,您应该在 elasticsearch 客户端进行优化,就像在您的情况下一样,您可以使用 dedicated ingest node 来提高摄取速度。
  2. 您还可以使用 dedicated co-ordinated node 进一步提高搜索速度。
  3. 每个 JVM 的客户端数量越少,您的应用程序中的内存利用率和混乱也就越少。