Elasticsearch en Debian. Cómo instalarlo: no uséis la versión de los repositorios

Ayer tuvimos que instalar un Elasticsearch en Debian. Y como nos dio bastantes problemas, os dejamos cómo hacerlo.

  • Primero, NO instaléis la versión en los repositorios de Debian. Ojala fuera tan sencillo como
    sudo apt-get install elasticsearch .
    El paquete en los repositorios instala bien,  se ejecuta bien, pero rechaza las conexiones cuando haces una prueba en el terminal mediante curl localhost:9200No deja registros, no da errores, nada. Si das un service elasticsearch status te dice Active (exited) en verde. Lo que significa que está arrancado, pero no sabe qué demonio usar.
    Si buscas soluciones a esto hay muchas como cambiar el network.host de elasticsearch o decirle en /etc/default/elasticsearch que arranque el demonio (viene desactivado por defecto).No hagáis nada de eso, no perdáis tiempo, no funciona y la solución es más sencilla: instalar la última versión de los repositorios de Elasticsearch.

Lo primero que deberéis hacer es comprobar que versión de java tenéis con java -version. Debería decir al menos 1.8

Si no instala esa versión. Para ello:

Agrega los repositorios de Oracle:

su -
echo "deb http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee /etc/apt/sources.list.d/webupd8team-java.list
echo "deb-src http://ppa.launchpad.net/webupd8team/java/ubuntu xenial main" | tee -a /etc/apt/sources.list.d/webupd8team-java.list
apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys EEA14886
apt-get update
exit

Ahora tienes dos maneras de instalar el java:

Si quieres que esa versión sea la que tiene por defecto:
sudo apt-get install oracle-java8-set-default

Si no quieres que sea por defecto (yo no quería):

sudo apt-get install --no-install-recommends oracle-java8-installer

Comprueba la versión de nuevo con java -version.

Ahora vamos a instalar elasticsearch.

    • Añadimos la clave pública de Elastic
      wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
    • Instala el apt-transport-https
      sudo apt-get install apt-transport-https
    • Añade el repositorio
      echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
    • Actualiza e instala elasticsearch de los repositorios de la empresa.
      sudo apt-get update && sudo apt-get install elasticsearch

Más información sobre la instalación aquí.

Ok ya lo tienes instalado, ¿cómo lo ejecutas? Tienes que ver si tu sistema usa Sysv init o systemd. Lo puedes verificar de manera sencilla haciendo:

ps -p 1

Nosotros usábamos systemd y explicaré el proceso con este sistema. Pero dejo el enlace aquí para que veáis cómo se hace de la otra manera.

(Optativo aunque recomendable). Hacer que elasticsearch se inicie al arrancar el servidor:

sudo /bin/systemctl daemon-reload
sudo /bin/systemctl enable elasticsearch.service

Podéis inicializar elasticsearch y pararlo con estos comandos:

sudo systemctl start elasticsearch.service
sudo systemctl stop elasticsearch.service

Para ver si funciona haced un service elasticsearch status y debería poner online. Podéis comprobarlo haciendo
curl localhost:9200 y deberíais recibir algo como (por cierto podéis ver la versión de elasticsearch así tb):

{
  "name" : "Cp8oag6",
  "cluster_name" : "elasticsearch",
  "cluster_uuid" : "AT69_T_DTp-1qgIJlatQqA",
  "version" : {
    "number" : "6.0.0-alpha1",
    "build_hash" : "f27399d",
    "build_date" : "2016-03-30T09:51:41.449Z",
    "build_snapshot" : false,
    "lucene_version" : "7.0.0-SNAPSHOT"
  },
  "tagline" : "You Know, for Search"
}

También podéis verificar que está escuchando en ese puerto con netstat -ntpl

¡Y ya lo tenéis!

Por último recordaros que los logs están en /var/log/elasticsearch/