Elasticsearch Clone Index

Elasticsearch Clone Index

In questo post, impareremo come clonare un indice esistente in un cluster di Elasticsearch. Ciò può consentire di eseguire modifiche a un indice senza alterare l'indice originale. Ti consente inoltre di rinominare, indicizzare e trasferire rapidamente i vecchi dati in un unico comando.

Immerciamoci.

Richiedi sintassi

Il seguente snippet mostra la sintassi per l'API dell'indice clone:

INVIARE //_clone/
METTERE //_clone/


La richiesta clone l'indice in un nuovo indice in cui ciascuno dei frammenti primari originale viene copiato in un nuovo primario condiviso sul nuovo indice.

Tieni presente che Elasticsearch non clonerà i modelli dell'indice e i metadati dell'indice per l'indice clone. Tali metadati includono alias, follower del CCR, ecc.

Come funziona la clonazione dell'indice

ElasticSearch esegue le seguenti azioni durante la clonazione di un indice:

    1. ElasticSearch crea un nuovo indice con definizioni simili all'indice di origine.
    2. Il passo successivo è la chiusura dura dai segmenti dell'indice di origine nel nuovo indice clone.
    3. Lastlty, Elasticsearch recupera l'indice clone come se si fosse ripreso da uno stato chiuso.

Condizioni per la clonazione dell'indice

Le seguenti condizioni sono necessarie per la clonazione di un indice:

    1. Un indice con un nome simile a quello del target non deve esistere nel cluster.
    2. L'indice di origine deve essere indice.
    3. Il numero di frammenti di un indice di origine e target deve essere simile.
    4. Il nodo su cui viene eseguito il processo del clone deve avere uno spazio sufficiente per adattarsi al nuovo indice.

Esempio illustrazione

Vediamo un esempio su come utilizzare l'API Clone Elasticsearch per clonare un indice esistente.

Supponiamo di avere un indice chiamato "Netflix". Possiamo creare un indice clone con la richiesta come mostrato:

Possiamo iniziare impostando l'indice in sola lettura. Elasticsearch non clonerà un indice nella modalità di scrittura:

Curl -xput "http: // localhost: 9200/netflix/_block/read_only" -h "kbn -xsrf: reporting"


Questo dovrebbe tornare come segue:


"riconosciuto": vero,
"shards_acknowledged": vero,
"Indici": [

"Nome": "Netflix",
"bloccato": vero

"


Infine, possiamo clonare l'indice come mostrato nel seguente:

CURL -XPost "http: // localhost: 9200/netflix/_clone/netflix_copy" -H "kbn -xsrf: reporting"


L'esecuzione della richiesta precedente dovrebbe creare un clone dell'indice e restituire un output come:


"riconosciuto": vero,
"shards_acknowledged": vero,
"INDICE": "Netflix_Copy"


Se si desidera specificare le impostazioni dell'indice e gli alias, è possibile eseguire il seguente comando come mostrato:

Curl -xpost "http: // localhost: 9200/netflix/_clone/netflix_cp" -h "kbn -xsrf: reporting" -h "contenuti -type: applicazione/json" -d '

"impostazioni":
"indice.NUMBER_OF_SHARDS ": 1,
"Number_of_replicas": 3
,
"Aliases":
"Netflix_alias":

'


Tieni presente che il numero di frammenti dell'indice clone deve essere simile al numero di frammenti dell'indice di origine.

Produzione:


"riconosciuto": vero,
"shards_acknowledged": vero,
"INDICE": "Netflix_CP"


Nota: ElasticSearch restituisce un riconoscimento: stato vero immediato. La richiesta non attende il completamento del processo di clonazione.

Conclusione

In questo post, abbiamo discusso dei fondamenti del lavoro con l'API di clonazione di Elasticsearch. Ciò consente di creare una copia di un indice esistente nel cluster.

Grazie per aver letto!