我已经浏览了https://www.elastic.co/blog/found-interfacing-elasticsearch-picking-client上的官方文档
但它没有给出任何基准或性能数据来帮助客户进行选择.我发现设置TransportClient或设置NodeClient非常简单,因为它的文档也非常稀少,几乎没有任何示例.
因此,如果有人已经在选择客户端时做了一些基准测试,我会非常感谢并且更多地关注调整已建立的客户端而不是评估要选择的客户端.
我们的应用程序是一个重量级的应用程序,我们计划为此设置一个50-shard,50-replica ES集群.
所有这些客户端都可以进行查询,并且各有利弊(以下列表并不详尽):
如果您要使用大量写入的应用程序,我建议您甚至根本不要使用任何这些客户端。主要原因是它们本质上都是同步的,如果您的架构或网络的任何组件由于某种原因而发生故障,那么您将丢失数据,这可能不是您的选择。
如果您要提取大量数据,通常可以采用异步方式,即将数据存储在临时(但持久)队列(Kafka,Redis,JMS等)中,然后让另一个进程将其流式传输到ES。有很多方法可以做到这一点,但是一个非常简单的方法就是使用Logstash。
无论您决定将数据存储在Kafka还是JMS或Redis中,都可以让Logstash使用数据并将其流式传输到ES,即让Logstash担心繁重的写操作,这非常好。这可以很容易地实现
kafka或redis或stomp输入elasticsearch输出经由批量端点所得到的数据到ES转发。使用这种经过良好调整的设置,您可以处理非常重的写入负载,而不必担心要使用哪个客户端以及如何调整它。不过,这个问题仍然可以查询,但由于在您的情况下写部分至关重要,因此您需要使其牢固,唯一的严肃方法是进行异步操作,并让经过良好开发和测试的ETL(例如Logstash,或流利,等等)为您做到。
更新
值得注意的是,从ES 5.0开始,将有一个新的Java REST客户端可用。
| 归档时间: |
|
| 查看次数: |
4745 次 |
| 最近记录: |