我们应该使用什么客户端(java或rest)来索引弹性搜索中的数据?

时间:2016-09-02 17:31:10

标签: java elasticsearch

我使用java客户端在弹性搜索1.4.4中索引我的数据。 但现在我觉得,如果我们正在从1.4.4升级到更新版本2.3.2,使用Java客户端是噩梦。如果您中的任何一个人已经使用过,请告诉我使用休息时无法获得的任何好处。

1 个答案:

答案 0 :(得分:4)

主要好处是表现。在大多数情况下,Java API比Jest更快。我建议你阅读这篇文章Interfacing with Elasticsearch: Picking a Client

传输客户端

  

速度非常快,可以在JVM上本地运行。序列化是   有效,消息和操作几乎没有开销   发送到/来自您的Elasticsearch实例。它需要保持   Elasticsearch服务器和客户端版本有些同步。先   对于Elasticsearch 1.0,需要完全相同的版本,但是   较新的版本(1.0及更高版本)支持版本之间的交互。   在两者上运行相同的JVM更新版本也是有益的   客户端和服务器由于异常序列化和其他   更新之间潜在的微小差异。

<强>结论

  

很容易花费大量时间来弄清楚它们之间的差异   无数的协议和客户端与Elasticsearch一起使用,但是   选择实际上非常简单:如果可能,请使用高性能   您熟悉的HTTP客户端或官方语言   结合。

     

如果您使用的是Java,则应选择传输客户端   节点客户端除非使用节点客户端的性能提升   大到足以保证额外的网络复杂性。   使用基准来验证性能提升。

我认为这个discussion也很有用。

PS :我会引用你的问题:

  

如果你们中的任何一个人已经使用过,请告诉我任何不是的好处   可以使用休息。

答案就是表现。我意识到迁移真的很头疼,但你需要决定什么对你更重要:支持或性能。例如,Jest客户端比Java API更具功能,您可以轻松扩展此功能。你赢了支持但速度却很快。阅读更多Jest comparison to native API

  

因此,如果您有多个运行不同版本的ES群集,那么   使用本机(或传输)客户端将是一个问题,你会   需要去HTTP(而Jest是我认为的主要选择)。如果版本控制   不是问题,原生客户将是您最好的选择   群集感知