Como instalar Elasticsearch en Ubuntu

Como instalar Elasticsearch en Ubuntu


Llevo ya unos meses trabajando en una herramienta analítica con Elasticsearch como base de datos noSQL.

Hoy voy a explicar como instalar un Elasticsearch (single node) paso a paso, aprovechando que en estos momentos ando inmerso en nuevos proyectos personales en los que he vuelto a elegir a Elasticsearch como base de datos noSQL. ¿Y Porqué en Ubuntu? Es la distribución con la que suelo trabajar y es lo que he elegido para mi micro instancia de EC2 de AWS.

Prerrequisitos

Instalar una maquina virtual de java, basta con el JDK del que ya dispones en Ubuntu. Si no lo tienes ejecuta:

~ $ sudo apt-get install openjdk-7

En cualquier caso si estas interesado en instalar el JDK de Oracle en este enlace puedes ver como.

Descarga la última versión de Elasticsearch, en mi caso 1.2.

~ $ wget https://download.elasticsearch.org/elasticsearch/elasticsearch/elasticsearch-1.2.1.deb

Instalación

Instala el paquete descargado ejecutando:

~ $ sudo dpkg -i elasticsearch-1.2.1.deb

Las configuraciones de directorios por defecto tras la instalación son:

  • /etc/elasticsearch, ficheros de configuración
  • /usr/share/elasticsearch, home
  • /var/lib/elasticsearch, datos
  • /var/logs/elasticsearch, logs
  • /tmp/elasticsearch, ficheros temporales

El siguiente paso "es opcional" y solo si estas interesado en cambiar la ubicación de los directorios por defecto de instalación de Elasticsearch. En mi caso cambio data, aprovechando que en mi instancia de EC2 de AWS hago uso de un EBS enlazado al directorio /opt. Por este motivo creo un nuevo directorio data:

~ $ sudo mkdir -p /opt/elasticsearch/data 
~ $ sudo chown elasticsearch:elasticsearch -R /opt/elasticsearch

Más adelante os describo como realizar el cambio del directorio por configuración.

(Aquí tienes más información acerca de la estructura de directorios de elasticsearch)

Configuración

Edita el fichero de configuración de Elasticsearch:

~ $ sudo vi /etc/elasticsearch/elasticsearch.yml

Este fichero en formato YAML suele estar totalmente comentado, ya que Elastisearch arranca con los valores por defecto. Agregamos la información mínima para nuestro nodo:

  • cluster.name, nombre del cluster al que pertenece nuestro nodo.
  • node.name, nombre para este nodo. Si no se define Elasticsearch usará nombres personajes de marvel de forma aleatoría para nombrarlo.
  • path.data, ubicación del directorio de datos donde se almacenarán los índices. Que como ya he comentado es opcional y por defecto suele ser /var/lib/elasticsearch.

Mi configuración sería:

cluster:  
        name: elasticsearch_cluster
node:  
        name: elasticsearch_node1
path:  
        data: /opt/elasticsearch/data

(Aquí tienes más información acerca de los parámetros de configuración básicos de Elasticsearch)

Iniciando

Para iniciar Elasticsearch ejecuta los siguientes comandos:

~ $ sudo update-rc.d elasticsearch defaults 95 10
~ $ sudo /etc/init.d/elasticsearch start

Deberías de tener tu nodo de Elasticsearch funcionando en el puerto 9200 por lo que un simple curl como el de este ejemplo bastaría para verificar que todo ha ido bien:

~ $ curl -XGET http://localhost:9200/
{
  "status" : 200,
  "name" : "elasticsearch_node1",
  "version" : {
    "number" : "1.0.0",
    "build_hash" : "a46900e9c72c0a623d71b54016357d5f94c8ea32",
    "build_timestamp" : "2014-02-12T16:18:34Z",
    "build_snapshot" : false,
    "lucene_version" : "4.6"
  },
  "tagline" : "You Know, for Search"
}

Instalación del plugin Head

Si eres como yo y necesitas algo más visual para no hacer uso constante del curl, quizás lo mejor es usar Marvel, que da información detallada sobre el estado de un cluster de Elasticsearch y tiene un editor de consultas bastante bueno.

Yo empecé con el plugin head así que aquí os describo los pasos. Basta con ejecutar:

~ $ cd /usr/share/elasticsearch/bin
~ $ sudo plugin -install mobz/elasticsearch-head

Una vez echo accedemos con nuestro navegador a:

http://localhost:9200/_plugin/head

Y deberíais de tener una pantalla con la pestaña Overview activa en la que aparece el estado de nuestro cluster de Elasticsearch e información de nuestro nodo (esta es una imagen del mio con uno de mis índices)

Elasticsearch Head Plugin

El resto de pestañas permiten consultar datos de los índices Elasticsearch y en Any search puedes realizar consultas de forma manual.