我使用java客户端在弹性搜索1.4.4中索引我的数据。 但现在我觉得,如果我们正在从1.4.4升级到更新版本2.3.2,使用Java客户端是噩梦。如果您中的任何一个人已经使用过,请告诉我使用休息时无法获得的任何好处。
答案 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是我认为的主要选择)。如果版本控制 不是问题,原生客户将是您最好的选择 群集感知