Elasticsearch renomear índice

Elasticsearch renomear índice

Um índice de pesquisa ou índices Elasticsearch é (são) uma estrutura de dados que contém mapeamentos para vários documentos. Em um banco de dados relacional, um índice pode se referir a um banco de dados específico.

Um cluster Elasticsearch contém vários índices, incluindo vários tipos, que seguram os documentos.

O seguinte pode representar o relacionamento Elasticsearch com um banco de dados relacional.

  • PostGresql -> Database -> Tabela -> Rinha/Coluna
  • Elasticsearch -> Índice -> Tipo -> Documento

Neste guia, discutiremos vários métodos para renomear um Índice de Elasticsearch existente.

Método 1: Reindexing

O primeiro método que podemos usar ao renomear um índice é a API de reindexação. Esta API permite copiar documentos de um índice de origem para um índice de destino especificado.

No entanto, a API do Reindex não copia a configuração do índice de origem para o destino. Portanto, temos que configurar o índice de destino e aplicar a configuração do índice de origem antes de chamar o Reindex.

Podemos implementar uma operação completa do rei-index seguindo as etapas, conforme descrito abaixo:

  1. Crie um novo índice de pesquisa elástica (fonte)
  2. Buscar a configuração do índice e salvá -lo.
  3. Crie um novo índice (de destino) com a configuração do índice de origem.
  4. Ligue para a API do Reindex da fonte para o destino
  5. Exclua o índice de origem.

Se você tem um índice de elasticsearch existente, fique à vontade para pular para a etapa 2

OBSERVAÇÃO: Neste guia, forneceremos todas as solicitações de pesquisa do Elasticsearch para Curl.

Etapa 1: Crie um novo índice
Vamos criar um índice que atue como fonte. Para simplificar, usaremos uma configuração simples de índice com a maioria dos parâmetros padrão.

Acenderemos um pedido ao Elasticsearch HTTP Endpoint.

Uma solicitação de exemplo para criar um índice "Test-Index" está abaixo:

Curl -xput "http: // localhost: 9200/test -index" -h 'content -type: Application/json' -d '

"configurações":
"Índice":
"number_of_shards": 3,
"number_of_replicas": 2

,
"Mapeamentos":
"Propriedades":
"Field1": "type": "text"


'

O próximo passo é adicionar dados ao índice criado. Por padrão, o índice não contém nenhum documento.

Curl -xget http: // localhost: 9200/_cat/índices/test -index \?v

Para adicionar dados ao índice, execute a solicitação como:

A solicitação acima deve criar um documento no índice de teste-índice.

Podemos verificar se o documento existe usando a solicitação GET no ponto de extremidade do índice.

Curl -xget "http: // lochost: 9200/test -index/_search" -h 'content -type: Application/json' -d '

"Query": "match_all":
'
'

Um exemplo de saída é o ANS mostrado:

Etapa 2: buscar configuração de fonte
A próxima etapa antes de executar uma operação de reindex é copiar a configuração do índice de origem.

Começaremos obtendo a configuração do índice. Para fazer isso, enviamos uma solicitação HTTP para a API _Setting.

Configurações = $ (Curl -xget "https: // localhost: 9200/test -index/_settings")

Salvamos a saída em uma variável que podemos verificar usando o comando:

ECHO $ ​​Configurações | JQ

Como a saída está no formato JSON, passamos a um processador JSON como JQ. Um exemplo de saída é como mostrado:

O próximo passo é obter o mapeamento do índice. Nesse caso, enviaremos uma solicitação GET para o ponto final _Mapping como:

Mapping = $ (Curl -xget "https: // localhost: 9200/test -index/_mapping")

Verifique se a saída é salva na variável:

eco $ mapeamento | JQ

A saída é como mostrado:

Em seguida, combine a saída da configuração $ e do mapeamento $ para um único formato JSON.

A seguir, é apresentada uma captura de tela truncada de ambas as saídas combinadas (Config.json).

Etapa 3: Crie um novo índice
Agora é hora de criar um novo índice com a configuração de salvamento. Verifique se sua configuração não contém erros.

Execute o comando como:

Curl -xput "http: // localhost: 9200/renomeado -index" -h 'content -type: Application/json' -D Config.JSON '

A seguir, o conteúdo da configuração, o arquivo JSON usado neste tutorial.

Após a criação bem -sucedida, você deve ver reconhecido: verdadeiro como mostrado:

Etapa 4: Reindex
Agora que temos um índice renomeado semelhante ao índice de origem, podemos copiar dados da fonte para o destino usando a API do Reindex.

Curl -xpost "http: // localhost: 9200/_reindex" -h 'content -type: Application/json' -d '

"fonte":
"Índice": "Index de teste"
,
"dest":
"Índice": "Renomeado-Index"

'

Depois de fazer a solicitação do Reindex, o Elasticsearch copiará os dados do índice de origem especificado para o índice de destino.

Aqui está um exemplo de saída:

Etapa 5: Excluir índice de fonte
Não faz sentido ter dois índices com configuração e dados semelhantes. Portanto, podemos soltar o índice de origem:

Curl -xdelete http: // localhost: 9200/teste -index

"Reconhecido": verdadeiro

Método 2: Clone API

A segunda e mais fácil maneira de renomear e indexar é usar a API do clone introduzida no Elasticsearch versão 7.4 e acima.

Para usar a API do clone, você deve garantir que o índice de origem seja somente leitura e a saúde do cluster é verde.

Como funciona a clonagem
A clonagem funciona da seguinte maneira:

  • Crie um novo índice de Elasticsearch. O novo índice deve conter definições idênticas como o índice antigo (índice de origem).
  • A próxima etapa é realizar um segmento de ligação rígida do índice de origem para o novo índice Elasticsearch.
  • Depois que o link duro é realizado, o novo índice é reaberto com as definições e dados do índice antigo.

Etapa 1: Defina o índice de origem como somente leitura
Para definir o índice de origem como o modo somente leitura, usamos a API _Settings e passamos as informações, conforme mostrado na solicitação abaixo:

Curl -xput "http: // localhost: 9200/test -index/_settings" -h 'content -type: Application/json' -d '

"configurações":
"índice.blocos.verdade Branca

'

Etapa 2: Índice de origem do clone para o alvo
Para clonar o índice de teste para um novo índice chamado Renomed-Cled-Index, podemos executar a solicitação como mostrado:

Curl -xpost “http: // localhost: 9200/teste-índice/_clone/renomeado clonado-índice

Supondo que os seguintes requisitos sejam verdadeiros, você deve ter um índice renomeado do índice de origem.

  1. O índice de destino especificado não deve existir.
  2. O nó tem espaço suficiente para armazenar o índice clonado
  3. O índice de origem tem um número igual de fragmentos primários como o índice de destino especificado.

Conclusão

Neste guia, abordamos como renomear um índice Elasticsearch usando dois métodos.

Obrigado pela leitura!