WARNING: Version 5.x has passed its EOL date.
This documentation is no longer being maintained and may be removed. If you are running this version, we strongly advise you to upgrade. For the latest information, see the current release documentation.
Keeping track of nodes
editKeeping track of nodes
editCreating a Node
editA Node
can be instantiated by passing it a Uri
var node = new Node(new Uri("http://localhost:9200")); node.Uri.Should().NotBeNull(); node.Uri.Port.Should().Be(9200);
By default master eligible and holds data is presumed to be true *
node.MasterEligible.Should().BeTrue(); node.HoldsData.Should().BeTrue();
Is resurrected is true on first usage, hints to the transport that a ping might be useful
node.IsResurrected.Should().BeTrue();
Building a Node path
editpassing a node with a path should be preserved. Sometimes an Elasticsearch node lives behind a proxy
var node = new Node(new Uri("http://test.example/elasticsearch")); node.Uri.Port.Should().Be(80); node.Uri.AbsolutePath.Should().Be("/elasticsearch/");
We force paths to end with a forward slash so that they can later be safely combined
var combinedPath = new Uri(node.Uri, "index/type/_search"); combinedPath.AbsolutePath.Should().Be("/elasticsearch/index/type/_search");
which is exactly what the CreatePath
method does on Node
combinedPath = node.CreatePath("index/type/_search"); combinedPath.AbsolutePath.Should().Be("/elasticsearch/index/type/_search");
Marking Nodes
editvar node = new Node(new Uri("http://localhost:9200")); node.FailedAttempts.Should().Be(0); node.IsAlive.Should().BeTrue();
every time a node is marked dead, the number of attempts should increase and the passed datetime should be exposed.
for(var i = 0; i<10;i++) { var deadUntil = DateTime.Now.AddMinutes(1); node.MarkDead(deadUntil); node.FailedAttempts.Should().Be(i + 1); node.IsAlive.Should().BeFalse(); node.DeadUntil.Should().Be(deadUntil); }
however when marking a node alive, the DeadUntil
property should be reset and FailedAttempts
reset to 0
node.MarkAlive(); node.FailedAttempts.Should().Be(0); node.DeadUntil.Should().Be(default(DateTime)); node.IsAlive.Should().BeTrue();
Node Equality
editNodes are considered equal if they have the same endpoint, no matter what other metadata is associated
var node = new Node(new Uri("http://localhost:9200")) { MasterEligible = false }; var nodeAsMaster = new Node(new Uri("http://localhost:9200")) { MasterEligible = true }; (node == nodeAsMaster).Should().BeTrue(); (node != nodeAsMaster).Should().BeFalse(); var uri = new Uri("http://localhost:9200"); (node == uri).Should().BeTrue(); var differentUri = new Uri("http://localhost:9201"); (node != differentUri).Should().BeTrue(); node.Should().Be(nodeAsMaster);