Elasticsearch er en kraftfuld open source søge- og analysemaskine, der kan bruges til en række forskellige opgaver, herunder indeksering, søgning og aggregering af data. Et almindeligt problem, der kan opstå med Elasticsearch, er tilstedeværelsen af ikke-tildelte shards. Disse shards er ikke tildelt nogen node i klyngen og kan forårsage en række problemer, herunder reduceret ydeevne og øget latenstid.
Heldigvis er der en række måder at slette ikke-tildelte shards i Elasticsearch. En simpel metode er at bruge _cluster/reroute API. Denne API giver dig mulighed for manuelt at omtildele shards til forskellige noder i klyngen og kan bruges til at slette ikke-tildelte shards ved at tildele dem til en ikke-eksisterende node.
For at bruge _cluster/reroute API kan du bruge følgende curl-kommando:
```
curl -XPOST 'localhost:9200/_cluster/reroute?dry_run=true' -d '{
"kommandoer":[
{
"move":{
"index":"mit_indeks",
"skår":0,
"target":"ikke_eksisterende_node"
}
}
]
}'
```
Denne kommando udsender en liste over ændringer, der ville blive foretaget i klyngen, hvis rebalance-operationen skulle udføres. For rent faktisk at udføre rebalance-operationen kan du blot udelade parameteren dry_run fra curl-kommandoen.
En anden måde at slette ikke-tildelte shards i Elasticsearch er at bruge force merge API. Denne API giver dig mulighed for at tvinge sammenfletning af flere segmenter i indekset, hvilket nogle gange kan resultere i sletning af ikke-tildelte shards.
For at bruge Force Merge API kan du bruge følgende curl-kommando:
```
curl -XPOST 'localhost:9200/my_index/_forcemerge?max_num_segments=1'
```
Denne kommando vil tvinge alle segmenter i my_index-indekset til et enkelt segment, hvilket kan resultere i sletning af ikke-tildelte shards.
Endelig kan du også slette ikke-tildelte shards i Elasticsearch ved at slette shards.json-filen fra databiblioteket. Dette er en mere drastisk foranstaltning og bør kun bruges, hvis de andre metoder ikke har haft succes.
For at slette filen shards.json kan du bruge følgende kommando:
```
rm -f data/nodes/0/indices/my_index/0/shards.json
```
Denne kommando vil slette filen shards.json for shard 0 af my_index-indekset. Du bliver nødt til at gentage denne kommando for hver ikke-tildelt shard, som du vil slette.
Ved at følge disse trin kan du nemt slette ikke-tildelte shards i Elasticsearch og forbedre ydeevnen af din klynge.