Elasticsearch är en kraftfull sök- och analysmotor med öppen källkod som kan användas för en mängd olika uppgifter, inklusive indexering, sökning och aggregering av data. Ett vanligt problem som kan uppstå med Elasticsearch är förekomsten av otilldelade skärvor. Dessa skärvor är inte tilldelade någon nod i klustret och kan orsaka ett antal problem, inklusive minskad prestanda och ökad latens.
Lyckligtvis finns det ett antal sätt att ta bort otilldelade shards i Elasticsearch. En enkel metod är att använda _cluster/reroute API. Detta API gör att du manuellt kan tilldela shards till olika noder i klustret och kan användas för att ta bort otilldelade shards genom att tilldela dem till en icke-existerande nod.
För att använda _cluster/reroute API kan du använda följande curl-kommando:
```
curl -XPOST 'localhost:9200/_cluster/reroute?dry_run=true' -d '{
"kommandon":[
{
"move":{
"index":"mitt_index",
"skärva":0,
"target":"icke_existerande_nod"
}
}
]
}'
```
Detta kommando kommer att mata ut en lista över ändringar som skulle göras i klustret om ombalanseringsoperationen skulle utföras. För att faktiskt utföra ombalanseringsoperationen kan du helt enkelt utelämna parametern dry_run från curl-kommandot.
Ett annat sätt att ta bort otilldelade shards i Elasticsearch är att använda Force Merge API. Detta API låter dig tvinga sammanslagning av flera segment i indexet, vilket ibland kan resultera i radering av otilldelade shards.
För att använda Force Merge API kan du använda följande curl-kommando:
```
curl -XPOST 'localhost:9200/my_index/_forcemerge?max_num_segments=1'
```
Detta kommando tvingar samman alla segment i my_index-indexet till ett enda segment, vilket kan resultera i radering av otilldelade shards.
Slutligen kan du också ta bort otilldelade shards i Elasticsearch genom att ta bort filen shards.json från datakatalogen. Detta är en mer drastisk åtgärd och bör endast användas om de andra metoderna inte har varit framgångsrika.
För att ta bort filen shards.json kan du använda följande kommando:
```
rm -f data/nodes/0/indices/my_index/0/shards.json
```
Detta kommando tar bort filen shards.json för shard 0 i my_index-indexet. Du måste upprepa detta kommando för varje otilldelad shard som du vill ta bort.
Genom att följa dessa steg kan du enkelt ta bort otilldelade shards i Elasticsearch och förbättra prestandan för ditt kluster.