Elasticsearch is een krachtige open-source zoek- en analyse-engine die voor een verscheidenheid aan taken kan worden gebruikt, waaronder het indexeren, doorzoeken en aggregeren van gegevens. Een veelvoorkomend probleem dat kan optreden bij Elasticsearch is de aanwezigheid van niet-toegewezen shards. Deze shards zijn aan geen enkel knooppunt in het cluster toegewezen en kunnen een aantal problemen veroorzaken, waaronder verminderde prestaties en verhoogde latentie.
Gelukkig zijn er een aantal manieren om niet-toegewezen shards in Elasticsearch te verwijderen. Een eenvoudige methode is om de _cluster/reroute API te gebruiken. Met deze API kunt u shards handmatig opnieuw toewijzen aan verschillende knooppunten in het cluster, en kan worden gebruikt om niet-toegewezen shards te verwijderen door ze toe te wijzen aan een niet-bestaand knooppunt.
Om de _cluster/reroute API te gebruiken, kunt u de volgende curl-opdracht gebruiken:
```
curl -XPOST 'localhost:9200/_cluster/reroute?dry_run=true' -d '{
"opdrachten":[
{
"beweging":{
"index":"mijn_index",
"scherf":0,
"target":"non_existent_node"
}
}
]
}'
```
Met deze opdracht wordt een lijst met wijzigingen weergegeven die in het cluster zouden worden aangebracht als de herbalanceringsbewerking zou worden uitgevoerd. Om de herbalanceringsbewerking daadwerkelijk uit te voeren, kunt u eenvoudigweg de dry_run-parameter weglaten uit de curl-opdracht.
Een andere manier om niet-toegewezen shards in Elasticsearch te verwijderen is door de Force Merge-API te gebruiken. Met deze API kunt u meerdere segmenten in de index geforceerd samenvoegen, wat soms kan resulteren in het verwijderen van niet-toegewezen shards.
Om de force merge API te gebruiken, kunt u de volgende curl-opdracht gebruiken:
```
curl -XPOST 'localhost:9200/mijn_index/_forcemerge?max_num_segments=1'
```
Met deze opdracht worden alle segmenten in de my_index-index geforceerd samengevoegd tot één segment, wat kan resulteren in het verwijderen van niet-toegewezen shards.
Ten slotte kunt u ook niet-toegewezen shards in Elasticsearch verwijderen door het bestand shards.json uit de gegevensmap te verwijderen. Dit is een drastischer maatregel en mag alleen worden toegepast als de andere methoden niet succesvol zijn geweest.
Om het bestand shards.json te verwijderen, kunt u de volgende opdracht gebruiken:
```
rm -f data/nodes/0/indices/my_index/0/shards.json
```
Met deze opdracht wordt het bestand shards.json voor shard 0 van de my_index-index verwijderd. U moet deze opdracht herhalen voor elke niet-toegewezen Shard die u wilt verwijderen.
Door deze stappen te volgen, kunt u eenvoudig niet-toegewezen shards in Elasticsearch verwijderen en de prestaties van uw cluster verbeteren. |