【问题标题】:Best way to import/export data from Elasticsearch using Java client使用 Java 客户端从 Elasticsearch 导入/导出数据的最佳方式
【发布时间】:2016-11-17 18:58:39
【问题描述】:

我正在将数百万条记录提取到 Elasticsearch 中,并从 Elasticsearch 中提取记录。我实际上正在使用 Elasticsearch Java 客户端。我在每个 JVM 上只创建一个客户端。使用此客户端,将数据摄取到 Elasticsearch 中,并使用相同的方法从 Elasticsearch 中提取数据。提取数据写入文件并进行一些分析,再次写入文件并将数据摄取回elasticsearch。

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

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

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

最好的方法是什么?

【问题讨论】:

    标签: java search elasticsearch


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-04-05
      • 1970-01-01
      • 2021-11-26
      • 2010-09-21
      • 2023-03-27
      • 2012-03-04
      • 1970-01-01
      • 2019-04-03
      • 1970-01-01
      相关资源
      最近更新 更多