Elasticsearch é um poderoso mecanismo de pesquisa e análise de código aberto que pode ser usado para uma variedade de tarefas, incluindo indexação, pesquisa e agregação de dados. Um problema comum que pode ocorrer com o Elasticsearch é a presença de fragmentos não atribuídos. Esses fragmentos não são atribuídos a nenhum nó do cluster e podem causar vários problemas, incluindo redução de desempenho e aumento de latência.
Felizmente, existem várias maneiras de excluir fragmentos não atribuídos no Elasticsearch. Um método simples é usar a API _cluster/reroute. Esta API permite reatribuir manualmente fragmentos a diferentes nós no cluster e pode ser usada para excluir fragmentos não atribuídos, atribuindo-os a um nó inexistente.
Para usar a API _cluster/reroute, você pode usar o seguinte comando curl:
```
curl -XPOST 'localhost:9200/_cluster/reroute?dry_run=true' -d '{
"comandos":[
{
"mover":{
"índice":"meu_índice",
"fragmento":0,
"alvo":"nó_inexistente"
}
}
]
}'
```
Este comando gerará uma lista de alterações que seriam feitas no cluster se a operação de rebalanceamento fosse executada. Para realmente executar a operação de rebalanceamento, você pode simplesmente omitir o parâmetro dry_run do comando curl.
Outra maneira de excluir fragmentos não atribuídos no Elasticsearch é usar a API Force Merge. Essa API permite forçar a mesclagem de vários segmentos no índice, o que às vezes pode resultar na exclusão de fragmentos não atribuídos.
Para usar a API Force Merge, você pode usar o seguinte comando curl:
```
curl -XPOST 'localhost:9200/my_index/_forcemerge?max_num_segments=1'
```
Este comando forçará a mesclagem de todos os segmentos do índice my_index em um único segmento, o que pode resultar na exclusão de fragmentos não atribuídos.
Por fim, você também pode excluir fragmentos não atribuídos no Elasticsearch excluindo o arquivo shards.json do diretório de dados. Esta é uma medida mais drástica e só deve ser utilizada se os outros métodos não tiverem tido sucesso.
Para excluir o arquivo shards.json, você pode usar o seguinte comando:
```
rm -f dados/nodes/0/indices/my_index/0/shards.json
```
Este comando excluirá o arquivo shards.json do fragmento 0 do índice my_index. Você precisará repetir este comando para cada fragmento não atribuído que deseja excluir.
Seguindo essas etapas, você pode excluir facilmente fragmentos não atribuídos no Elasticsearch e melhorar o desempenho do seu cluster.