Looking for elasticsearch Keywords? Try Ask4Keywords

ElasticsearchEmpezando con Elasticsearch


Observaciones

Elasticsearch es un servidor de búsqueda de código abierto avanzado basado en Lucene y escrito en Java.

Proporciona funciones de búsqueda distribuidas de texto completo y parcial, basadas en consultas y geolocalización accesibles a través de una API REST HTTP.

Versiones

Versión Fecha de lanzamiento
5.2.1 2017-02-14
5.2.0 2017-01-31
5.1.2 2017-01-12
5.1.1 2016-12-08
5.0.2 2016-11-29
5.0.1 2016-11-15
5.0.0 2016-10-26
2.4.0 2016-08-31
2.3.0 2016-03-30
2.2.0 2016-02-02
2.1.0 2015-11-24
2.0.0 2015-10-28
1.7.0 2015-07-16
1.6.0 2015-06-09
1.5.0 2015-03-06
1.4.0 2014-11-05
1.3.0 2014-07-23
1.2.0 2014-05-22
1.1.0 2014-03-25
1.0.0 2014-02-14

Parámetros básicos de búsqueda con ejemplos:

De forma predeterminada, el documento indexado completo se devuelve como parte de todas las búsquedas. Esto se conoce como la fuente (campo _source en los resultados de búsqueda). Si no queremos que se devuelva todo el documento de origen, podemos solicitar que solo se devuelvan algunos campos dentro de la fuente, o podemos establecer _source en falso para omitir el campo por completo.

Este ejemplo muestra cómo devolver dos campos, account_number y balance (dentro de _source ), de la búsqueda:

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match_all": {} },
  "_source": ["account_number", "balance"]
}'
 

Tenga en cuenta que el ejemplo anterior simplemente reduce la información devuelta en el campo _source . Todavía devolverá solo un campo llamado _source pero solo se account_number los campos account_number y balance .

Si proviene de un fondo SQL, el concepto anterior es algo similar a la consulta SQL

SELECT account_number, balance FROM bank;
 

Ahora vamos a pasar a la parte de consulta. Anteriormente, hemos visto cómo se match_all consulta match_all para hacer coincidir todos los documentos. Ahora introduzcamos una nueva consulta llamada consulta de coincidencia, que se puede considerar como una consulta de búsqueda de campo básica (es decir, una búsqueda realizada en un campo específico o conjunto de campos).

Este ejemplo devuelve la cuenta con el account_number establecido en 20 :

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match": { "account_number": 20 } }
}'
 

Este ejemplo devuelve todas las cuentas que contienen el término "molino" en la address :

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match": { "address": "mill" } }
}'
 

Este ejemplo devuelve todas las cuentas que contienen el término "molino" o "carril" en la address :

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match": { "address": "mill lane" } }
}'
 

Este ejemplo es una variante de match ( match_phrase ) que divide la consulta en términos y solo devuelve documentos que contienen todos los términos en la address en las mismas posiciones entre sí [1] .

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": { "match_phrase": { "address": "mill lane" } }
}'
 

Ahora vamos a introducir la consulta bool (ean). La consulta bool nos permite componer consultas más pequeñas en consultas más grandes usando la lógica booleana.

Este ejemplo compone dos consultas de coincidencia y devuelve todas las cuentas que contienen "mill" y "lane" en la dirección:

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": {
    "bool": {
      "must": [
        { "match": { "address": "mill" } },
        { "match": { "address": "lane" } }
      ]
    }
  }
}'
 

En el ejemplo anterior, la cláusula bool must especificar todas las consultas que deben ser verdaderas para que un documento se considere una coincidencia.

En contraste, este ejemplo compone dos consultas de coincidencia y devuelve todas las cuentas que contienen "mill" o "carril" en la address :

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": {
    "bool": {
      "should": [
        { "match": { "address": "mill" } },
        { "match": { "address": "lane" } }
      ]
    }
  }
}'
 

En el ejemplo anterior, la cláusula bool should especificar una lista de consultas, cualquiera de las cuales debe ser cierta para que un documento se considere una coincidencia.

Este ejemplo compone dos consultas de coincidencia y devuelve todas las cuentas que no contienen "mill" ni "lane" en la address :

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": {
    "bool": {
      "must_not": [
        { "match": { "address": "mill" } },
        { "match": { "address": "lane" } }
      ]
    }
  }
}'
 

En el ejemplo anterior, la cláusula bool must_not especifica una lista de consultas, ninguna de las cuales debe ser cierta para que un documento se considere una coincidencia.

Podemos combinar las cláusulas must, should y must_not simultáneamente en una consulta bool. Además, podemos componer consultas bool dentro de cualquiera de estas cláusulas bool para imitar cualquier lógica booleana multinivel compleja.

Este ejemplo devuelve todas las cuentas que pertenecen a personas que tienen exactamente 40 años y no viven en Washington ( WA para abreviar):

curl -XPOST 'localhost:9200/bank/_search?pretty' -d '
{
  "query": {
    "bool": {
      "must": [
        { "match": { "age": "40" } }
      ],
      "must_not": [
        { "match": { "state": "WA" } }
      ]
    }
  }
}'
 

Indexación y recuperación de un documento

Se accede a Elasticsearch a través de una API REST HTTP, generalmente utilizando la biblioteca cURL. Los mensajes entre el servidor de búsqueda y el cliente (su o su aplicación) se envían en forma de cadenas JSON. Por defecto, Elasticsearch se ejecuta en el puerto 9200.

En los ejemplos a continuación, se agrega ?pretty Pretty para decirle a Elasticsearch que pretenda la respuesta JSON. Cuando utilice estos puntos finales dentro de una aplicación, no necesita agregar este parámetro de consulta.

Indexación de documentos

Si pretendemos actualizar la información dentro de un índice más adelante, es una buena idea asignar identificaciones únicas a los documentos que indexamos. Para agregar un documento al índice llamado megacorp , con el tipo employee y la ejecución de ID 1 :

curl -XPUT "http://localhost:9200/megacorp/employee/1?pretty" -d'
{
    "first_name" : "John",
    "last_name" :  "Smith",
    "age" :        25,
    "about" :      "I love to go rock climbing",
    "interests": [ "sports", "music" ]
}' 
 

Respuesta:

{
  "_index": "megacorp",
  "_type": "employee",
  "_id": "1",
  "_version": 1,
  "_shards": {
    "total": 2,
    "successful": 1,
    "failed": 0
  },
  "created": true
}

 

El índice se crea si no existe cuando enviamos la llamada PUT.

Indexación sin identificación

POST /megacorp/employee?pretty
{
    "first_name" :  "Jane",
    "last_name" :   "Smith",
    "age" :         32,
    "about" :       "I like to collect rock albums",
    "interests":  [ "music" ]
}
 

Respuesta:

{
  "_index": "megacorp",
  "_type": "employee",
  "_id": "AVYg2mBJYy9ijdngfeGa",
  "_version": 1,
  "_shards": {
    "total": 2,
    "successful": 2,
    "failed": 0
  },
  "created": true
}

 

Recuperando documentos

curl -XGET "http://localhost:9200/megacorp/employee/1?pretty"
 

Respuesta:

{
  "_index": "megacorp",
  "_type": "employee",
  "_id": "1",
  "_version": 1,
  "found": true,
  "_source": {
    "first_name": "John",
    "last_name": "Smith",
    "age": 25,
    "about": "I love to go rock climbing",
    "interests": [
      "sports",
      "music"
    ]
  }
}

 

Obtenga 10 documentos del índice de megacorp con el employee tipo:

curl -XGET "http://localhost:9200/megacorp/employee/_search?pretty"
 

Respuesta:

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 2,
    "max_score": 1,
    "hits": [
      {
        "_index": "megacorp",
        "_type": "employee",
        "_id": "1",
        "_score": 1,
        "_source": {
          "first_name": "John",
          "last_name": "Smith",
          "age": 25,
          "about": "I love to go rock climbing",
          "interests": [
            "sports",
            "music"
          ]
        }
      },
      {
        "_index": "megacorp",
        "_type": "employee",
        "_id": "AVYg2mBJYy9ijdngfeGa",
        "_score": 1,
        "_source": {
          "first_name": "Jane",
          "last_name": "Smith",
          "age": 32,
          "about": "I like to collect rock albums",
          "interests": [
            "music"
          ]
        }
      }
    ]
  }
}

 

Búsqueda simple utilizando la consulta de match , que busca coincidencias exactas en el campo provisto:

curl -XGET "http://localhost:9200/megacorp/employee/_search" -d'
{
    "query" : {
        "match" : {
            "last_name" : "Smith"
        }
    }
}'
 

Respuesta:

{
  "took": 2,
  "timed_out": false,
  "_shards": {
    "total": 5,
    "successful": 5,
    "failed": 0
  },
  "hits": {
    "total": 1,
    "max_score": 0.6931472,
    "hits": [
      {
        "_index": "megacorp",
        "_type": "employee",
        "_id": "1",
        "_score": 0.6931472,
        "_source": {
          "first_name": "John",
          "last_name": "Smith",
          "age": 25,
          "about": "I love to go rock climbing",
          "interests": [
            "sports",
            "music"
          ]
        }
      }
    ]
  }
}

 

Instalando Elasticsearch y Kibana en CentOS 7

Para ejecutar Elasticsearch, se requiere un Java Runtime Environment (JRE) en la máquina. Elasticsearch requiere Java 7 o superior y recomienda Oracle JDK version 1.8.0_73 .

Por lo tanto, asegúrese de tener Java en su sistema. Si no, siga el procedimiento:

# Install wget with yum 
yum -y install wget

# Download the rpm jre-8u60-linux-x64.rpm for 64 bit 
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u60-b27/jre-8u60-linux-x64.rpm"

# Download the rpm jre-8u101-linux-i586.rpm for 32 bit
wget --no-cookies --no-check-certificate --header "Cookie: gpw_e24=http%3A%2F%2Fwww.oracle.com%2F; oraclelicense=accept-securebackup-cookie" "http://download.oracle.com/otn-pub/java/jdk/8u101-b13/jre-8u101-linux-i586.rpm"

# Install jre-.*.rpm
rpm -ivh jre-.*.rpm
 

Java ya debería estar instalado en su sistema centOS. Puedes comprobarlo con:

java -version
 

Descargar e instalar elasticsearch

# Download elasticsearch-2.3.5.rpm 
wget https://download.elastic.co/elasticsearch/release/org/elasticsearch/distribution/rpm/elasticsearch/2.3.5/elasticsearch-2.3.5.rpm

# Install elasticsearch-.*.rpm
rpm -ivh elasticsearch-.*.rpm   
 

Ejecutando elasticsearch como un servicio sistemático en el inicio

sudo systemctl daemon-reload
sudo systemctl enable elasticsearch
sudo systemctl start elasticsearch

# check the current status to ensure everything is okay.
systemctl status elasticsearch
 

Instalando Kibana

Primero importar GPG-key en rpm

sudo rpm --import http://packages.elastic.co/GPG-KEY-elasticsearch
 

Luego crea un repositorio local kibana.repo

sudo vi /etc/yum.repos.d/kibana.repo 
 

Y añade el siguiente contenido:

[kibana-4.4]
name=Kibana repository for 4.4.x packages
baseurl=http://packages.elastic.co/kibana/4.4/centos
gpgcheck=1
gpgkey=http://packages.elastic.co/GPG-KEY-elasticsearch
enabled=1
 

Ahora instala la kibana siguiendo el comando:

yum -y install kibana
 

Comience con:

systemctl start kibana
 

Verificar el estado con:

systemctl status kibana
 

Puede ejecutarlo como un servicio de inicio.

systemctl enable kibana
 

Instalando Elasticsearch en Ubuntu 14.04


Prerrequisitos

Para ejecutar Elasticsearch, se requiere un Java Runtime Environment (JRE) en la máquina. Elasticsearch requiere Java 7 o superior y recomienda Oracle JDK version 1.8.0_73 .

Instalar Oracle Java 8

sudo add-apt-repository -y ppa:webupd8team/java
sudo apt-get update
echo "oracle-java8-installer shared/accepted-oracle-license-v1-1 select true" | sudo debconf-set-selections
sudo apt-get install -y oracle-java8-installer
 

Comprobar la versión de Java

java -version
 

Descargar e instalar el paquete

Utilizando binarios

  1. Descarga la última versión estable de Elasticsearch aquí .
  2. Descomprima el archivo y ejecute

Linux:

$ bin/elasticsearch
 

Utilizando apt-get

Una alternativa a la descarga de elasticsearch desde el sitio web es instalarlo, usando apt-get .

wget -qO - https://packages.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
echo "deb https://packages.elastic.co/elasticsearch/2.x/debian stable main" | sudo tee -a /etc/apt/sources.list.d/elasticsearch-2.x.list
sudo apt-get update && sudo apt-get install elasticsearch
sudo /etc/init.d/elasticsearch start
 

Instalación de elasticsearch versión 5.x

wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://artifacts.elastic.co/packages/5.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-5.x.list
sudo apt-get update && sudo apt-get install elasticsearch
 

Ejecutando como un servicio en Linux:

Después de instalar lo anterior no se inicia solo. por lo que tenemos que iniciarlo como un servicio. Cómo iniciar o detener Elasticsearch depende de si su sistema utiliza SysV init o systemd. Puedes comprobarlo con el siguiente comando.

ps -p 1
 

Si su distribución utiliza SysV init, deberá ejecutar:

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

De lo contrario, si su distribución está usando systemd:

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

Ejecute el comando CURL desde su navegador o un cliente REST para verificar si Elasticsearch se ha instalado correctamente.

curl -X GET http://localhost:9200/
 

Instalación de Elasticsearch en Windows

Prerrequisitos

La versión para Windows de Elasticsearch se puede obtener en este enlace: https://www.elastic.co/downloads/elasticsearch . La última versión estable está siempre en la parte superior.

Como estamos instalando en Windows, necesitamos el archivo .ZIP . Haga clic en el enlace en la sección Downloads: y guarde el archivo en su computadora.

Esta versión de elastic es "portátil", lo que significa que no necesita ejecutar un instalador para usar el programa. Descomprima el contenido del archivo en una ubicación que pueda recordar fácilmente. Para la demostración, asumiremos que has descomprimido todo en C:\elasticsearch .

Tenga en cuenta que el archivo contiene una carpeta llamada elasticsearch-<version> de forma predeterminada, puede extraer esa carpeta a C:\ y cambiarle el nombre a elasticsearch o crear C:\elasticsearch usted mismo, luego descomprimir solo el contenido de la carpeta en el archivo a ahi

Dado que Elasticsearch está escrito en Java, necesita el entorno de ejecución de Java para funcionar. Entonces, antes de ejecutar el servidor, compruebe si Java está disponible abriendo un símbolo del sistema y escribiendo:

java -version
 

Deberías obtener una respuesta como esta:

java version "1.8.0_91"
Java(TM) SE Runtime Environment (build 1.8.0_91-b14)
Java HotSpot(TM) Client VM (build 25.91-b14, mixed mode)
 

Si ves lo siguiente en su lugar

'java' no se reconoce como un comando interno o externo, un programa operable o un archivo por lotes.

Java no está instalado en su sistema o no está configurado correctamente. Puedes seguir este tutorial para (re) instalar Java. Además, asegúrese de que estas variables de entorno estén configuradas en valores similares:

Variable Valor
JAVA_HOME C: \ Archivos de programa \ Java \ jre
CAMINO ...; C: \ Archivos de programa \ Java \ jre

Si aún no sabe cómo inspeccionar estas variables, consulte este tutorial .

Ejecutar desde archivo por lotes

Con Java instalado, abre la carpeta bin . Se puede encontrar directamente en la carpeta en la que se descomprimió todo, por lo que debería estar en c:\elasticsearch\bin . Dentro de esta carpeta hay un archivo llamado elasticsearch.bat que se puede usar para iniciar Elasticsearch en una ventana de comandos. Esto significa que la información registrada por el proceso será visible en la ventana del símbolo del sistema. Para detener el servidor, presione CTRL C o simplemente cierre la ventana.

Ejecutar como un servicio de Windows

Lo ideal es que no desee tener una ventana adicional de la que no pueda deshacerse durante el desarrollo y, por este motivo, Elasticsearch puede configurarse para que se ejecute como un servicio.

Antes de poder instalar Elasticsearch como un servicio, necesitamos agregar una línea al archivo C:\elasticsearch\config\jvm.options :

El instalador del servicio requiere que la configuración de tamaño de pila de subprocesos esté configurada en jvm.options antes de instalar el servicio. En Windows de 32 bits, debe agregar -Xss320k [...] y en Windows de 64 bits, debe agregar -Xss1m al archivo jvm.options . [fuente]

Una vez que haya realizado ese cambio, abra un símbolo del sistema y navegue hasta el directorio bin ejecutando el siguiente comando:

C:\Users\user> cd c:\elasticsearch\bin
 

La gestión del servicio es manejada por elasticsearch-service.bat . En versiones anteriores, este archivo podría llamarse simplemente service.bat . Para ver todos los argumentos disponibles, ejecútalo sin ninguna:

C:\elasticsearch\bin> elasticsearch-service.bat

Usage: elasticsearch-service.bat install|remove|start|stop|manager [SERVICE_ID]
 

La salida también nos dice que hay un argumento SERVICE_ID opcional, pero podemos ignorarlo por ahora. Para instalar el servicio, simplemente ejecute:

C:\elasticsearch\bin> elasticsearch-service.bat install
 

Después de instalar el servicio, puede iniciarlo y detenerlo con los argumentos correspondientes. Para iniciar el servicio, ejecute

C:\elasticsearch\bin> elasticsearch-service.bat start
 

y para detenerlo, correr

C:\elasticsearch\bin> elasticsearch-service.bat stop
 

Si prefiere una GUI para administrar el servicio, puede usar el siguiente comando:

C:\elasticsearch\bin> elasticsearch-service.bat manager
 

Esto abrirá Elastic Service Manager, que le permite personalizar algunas configuraciones relacionadas con el servicio, así como detener / iniciar el servicio utilizando los botones que se encuentran en la parte inferior de la primera pestaña.