Elasticsearch NEST客户端单例使用

时间:2014-12-21 13:01:59

标签: elasticsearch nest

使用.NET Elasticsearch NEST客户端时,我试图弄清楚如何最小化客户端库对节点执行ping操作的次数。我知道有一些设置可以禁用ping,但如果我们有一个节点关闭,我认为如果没有它们,我们会看到一个很大的负面性能影响。所以我真正想弄清楚的是,是否有办法在ElasticClient对象周围使用singleton pattern,连接状态信息或其他一些对象来帮助实现这一目标。

基本上我们需要一个共享对象,它具有多个ElasticClients可以使用的所有节点及其上/下状态,而无需创建每个新客户端都必须弄明白。另一种选择是将ElasticClient用作单身本身。

我在多线程ASP.NET应用程序和azure worker角色中使用客户端,因此确保它跨线程工作非常重要。

我在ES前面使用nginx来监控它的流量,你可以看到有很多" /"命中必须是客户端库ping。 (下面的报告摘要是通过Stackify解析我们的nginx日志。)

enter image description here

有人使用ElasticClient作为单身人士有任何成功或有任何建议吗?

1 个答案:

答案 0 :(得分:1)

客户端本身是无状态的,因此您应该能够将其用作单身人士。您还可以每次实例化一个新客户端,但如果您使用IConnectionPool,则需要确保每个客户端实例都收到IConnectionPool的相同实例。