elasticsearch create mapping for index
elasticsearch: distribución de índices en múltiples volúmenes de disco (1)
Tengo un índice que es bastante grande (aproximadamente 100 Gb), así que tuve que extender el espacio de mi disco en mi estudio digital del océano agregando otro volumen (ejecuto todo en un solo nodo). Le dije a elasticsearch que ahora tiene que considerar dos ubicaciones de disco por
/usr/share/elasticsearch/bin/elasticsearch -Epath.data=/var/lib/elasticsearch,/mnt/volume-sfo2-01/es_data
elasticsearch parece haber tomado nota de esto ya que escribió algunas cosas en la nueva ubicación
/mnt/volume-sfo2-01/es_data# cd nodes/
/mnt/volume-sfo2-01/es_data/nodes# ls
0
/mnt/volume-sfo2-01/es_data/nodes# cd 0/
/mnt/volume-sfo2-01/es_data/nodes/0# ls
indices node.lock _state
/mnt/volume-sfo2-01/es_data/nodes/0# cd indices
/mnt/volume-sfo2-01/es_data/nodes/0/indices# ls
DixLGLrJRXm1gSYcFzkzzw nmZbce8wTayJC2s_eMC0-g Qd-9ZnFIRoSM2z7AohKm-w Sm_tyYTJTty0ImvDamFaQw
/mnt/volume-sfo2-01/es_data/nodes/0/indices# cd DixLGLrJRXm1gSYcFzkzzw/
/mnt/volume-sfo2-01/es_data/nodes/0/indices/DixLGLrJRXm1gSYcFzkzzw# ls
_state
que es idéntico a las cosas que encuentro en / var / lib / elasticsearch / data, excepto en la información del índice real en el nivel más bajo.
Al leer el documental de búsqueda elástica, tengo la impresión de que elasticsearch está organizando el nuevo índice sobre las dos ubicaciones de disco, pero no dividirá un fragmento entre las dos ubicaciones. Así que inicié el índice con 5 fragmentos para que pueda dividir los datos entre los volúmenes.
La encuesta parece haber detectado las dos rutas de datos, ya que el archivo de registro muestra
[2017-06-17T19:16:57,079][INFO ][o.e.e.NodeEnvironment ] [WU6cQ-o] using [2] data paths, mounts [[/ (/dev/vda1), /mnt/volume-sfo2-01 (/dev/sda)]], net usable_space [29.6gb], net total_space [98.1gb], spins? [possibly], types [ext4]
Sin embargo, cuando indico los nuevos índices, utilizo constantemente todo el espacio de disco en mi disco original y eventualmente me quedo sin espacio en disco con el error
raise HTTP_EXCEPTIONS.get(status_code, TransportError)(status_code, error_message, additional_info)
elasticsearch.exceptions.TransportError: TransportError(500, u''index_failed_engine_exception'', u''Index failed for [pubmed_paper#25949809]'')
Nunca cambia uno de los fragmentos al segundo volumen? ¿Extraño algo? ¿Puedo guiar manualmente el uso del espacio de disco?
Aquí están los detalles de la versión elasticsearch:
# curl -XGET ''localhost:9200''
{
"name" : "WU6cQ-o",
"cluster_name" : "elasticsearch",
"cluster_uuid" : "hKc147QfQqCefLliStLNtw",
"version" : {
"number" : "5.1.1",
"build_hash" : "5395e21",
"build_date" : "2016-12-06T12:36:15.409Z",
"build_snapshot" : false,
"lucene_version" : "6.3.0"
},
"tagline" : "You Know, for Search"
}
y aquí está la estructura predeterminada del archivo de ruta, donde ekasticsearch almacena toda la información (en lugar de compartirla con la segunda ruta)
/var/lib/elasticsearch/elasticsearch/nodes/0/indices/DixLGLrJRXm1gSYcFzkzzw# ls
0 1 2 3 4 _state
¿Una pregunta es, probablemente, si puedo tomar uno de estos fragmentos y moverlo a la otra ubicación?
Lo que puede hacer es agregar un disco duro con un tamaño de 1TB a su sistema y copiar los datos de 100GB a un disco duro nuevo y actualizar su ubicación de directorio de datos para apuntar a un nuevo disco duro, no proporcione ambas rutas, de lo contrario tratará de escribir datos en viejo camino también