通过NEST进行弹性搜索:连接到多个主机群集的推荐方法是什么

时间:2013-04-22 13:18:50

标签: elasticsearch nest

我开始和NEST合作了。 我在a previous question看到我应该在程序开始时只使用TryConnect一次,然后使用Connect。 但对于长期运行的系统来说,这似乎有点过于天真。 如果我有3台机器的集群并且我想确保我可以连接到3台机器中的任何一台怎么办? 建议的方法应该是什么?

我应该: - 每次都使用TryConnect,如果失败则使用不同的主机+端口(下行 - 每次额外往返)? - 尝试与客户端一起工作并使用一些重试机制来处理由于连接问题导致的故障?也许在它之上实现一个连接池?

还有其他选择吗? 有什么建议/建议吗? 示例代码?

感谢您的帮助,
罗恩

1 个答案:

答案 0 :(得分:1)

连接池是一个经常被要求的功能,但由于涉及许多启发式方法和不同的方法,NEST没有开箱即用。你必须自己实现这一点。

我建议您不要在每次通话前拨打TryConnect(),因为现在您正在拨打两个电话而不是一个电话。

每次NEST通话都会返回IResponse,您可以检查IsValidConnectionStatus会保留请求和回复详情。

另见handling responses

上的文档

在1.0中,NEST将开始抛出TCP级别错误的异常,因此可以实现更通用的连接池方法,并且nest可能附带一个单独的nuget包实现一个(如果有的话作为参考)。另见此讨论https://github.com/Mpdreamz/NEST/pull/224#issuecomment-16347889

希望现在有所帮助。

更新此答案已过时NEST 1.0附带开箱即用的连接池和群集故障转移支持:http://nest.azurewebsites.net/elasticsearch-net/cluster-failover.html