Elasticsearch es un motor de búsqueda de código abierto basado en Apache Lucene, ofrece un motor de búsqueda de texto completo distribuido en tiempo real con una interfaz web HTTP y documentos JSON sin esquema.
Elasticsearch está desarrollado en Java. La versión de código abierto de Elasticsearch se publica con la licencia Apache 2.0 y la versión comercial se publica con la licencia de Elastic. Actualmente, es el motor de búsqueda empresarial más popular después de Apache Solr.
Esta publicación lo ayudará a instalar Elasticsearch en CentOS 8 / RHEL 8.
Requisitos
Elasticsearch está construido con Java y el paquete incluye una versión integrada de OpenJDK, lo que significa que no necesita instalar Java por separado para la instalación de Elasticsearch. El OpenJDK incluido se encuentra dentro del directorio JDK del directorio de inicio de Elasticsearch /usr/share/elasticsearch.
Instalar Java
Para usar su propia versión de Java, instale la versión LTS de Java y establezca la variable de entorno JAVA_HOME en su sistema.
LEER :Cómo instalar Java en CentOS 8 / RHEL 8
Verifique la versión de Java instalada en el sistema.
java -version
Salida:
java version "1.8.0_181" Java(TM) SE Runtime Environment (build 1.8.0_181-b13) Java HotSpot(TM) 64-Bit Server VM (build 25.181-b13, mixed mode)
Configure JAVA_HOME con el siguiente comando.
export JAVA_HOME=<JAVA_PATH>Después de instalar Elasticsearch en su sistema, configure JAVA_HOME en el archivo /etc/sysconfig/elasticsearch para permitir que Elasticsearch use una versión personalizada de Java.
Configurar repositorio de Elasticsearch
Elastic ofrece un paquete binario preconstruido (rpm) para RHEL y sus derivados. Descargue e instale la clave de firma pública de Elastic.
rpm --import https://artifacts.elastic.co/GPG-KEY-elasticsearch
Versión gratuita
Este paquete es de uso gratuito. Contiene funciones comerciales de código abierto, gratuitas y de pago. Cuando instale un paquete, recibirá una licencia básica. Puede visitar la página de suscripción para obtener una lista de todas las funciones incluidas en las versiones gratuita y comercial.
Puede iniciar una prueba de 30 días para probar todas las funciones pagas. Al final del período de prueba, las funciones comerciales funcionan en modo degradado. Puede revertir la licencia a una licencia básica, extender la prueba o comprar una suscripción.
cat << EOF > /etc/yum.repos.d/elasticsearch.repo [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF
Versión de código abierto
Este paquete es de uso gratuito y contiene solo funciones que están disponibles bajo la licencia Apache 2.0.
cat << EOF > /etc/yum.repos.d/elasticsearch.repo [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/oss-7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF
Instalar Elasticsearch
Instale Elasticsearch (v7.x) usando el siguiente comando.
Versión gratuita
yum install -y elasticsearch
Versión de código abierto
yum install -y elasticsearch-oss
Habilite Elasticsearch para que se inicie automáticamente durante el inicio del sistema.
systemctl daemon-reload systemctl enable elasticsearch systemctl start elasticsearch
Una vez que haya iniciado el servicio Elasticsearch, espere al menos un minuto para que se inicie por completo. De lo contrario, la prueba fallará.
Elastisearch ahora debería estar escuchando en el puerto 9200 para procesar solicitudes HTTP. Usa curl para obtener la respuesta.
curl -X GET 'http://localhost:9200'
Debería obtener una respuesta como la siguiente.
{ "name" : "centos8.itzgeek.local", "cluster_name" : "elasticsearch", "cluster_uuid" : "s6PwCJnoS7e7Pb3QMzkINg", "version" : { "number" : "7.4.0", "build_flavor" : "oss", "build_type" : "rpm", "build_hash" : "22e1767283e61a198cb4db791ea66e3f11ab9910", "build_date" : "2019-09-27T08:36:48.569419Z", "build_snapshot" : false, "lucene_version" : "8.2.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
Configurar Elasticsearch
Los archivos de configuración de Elasticsearch se encuentran en el directorio /etc/elasticsearch/. elasticsearch.yml es el archivo de configuración principal de Elasticsearch y contiene la configuración predeterminada para ejecutar el clúster de desarrollo. Los registros de Elasticsearch se almacenan en el directorio /var/log/elasticsearch.
Nombre del clúster
La configuración cluster.name se usa para descubrir y unir automáticamente un nodo con otros nodos. Si un grupo de nodos de Elasticsearch en la misma red tiene el mismo nombre de clúster, se descubrirán entre sí y formarán un clúster.
Cambie el nombre de clúster predeterminado del nodo de Elasticsearch para evitar la unión automática con otros nodos en la misma red. Asegúrese de utilizar un nombre de clúster único.
Edite el archivo elasticsearch.yml.
vi /etc/elasticsearch/elasticsearch.yml
Reemplace els-cluster con el nombre de su clúster de Elasticsearch.
cluster.name: els-cluster
Nombre de nodo
El node.name es como un nombre de host para el servidor de Elasticsearch, generado dinámicamente durante el inicio del servicio. Puede establecer el nombre del nodo actualizando la siguiente línea. Reemplace els-cluster-node01 con su nombre de nodo de Elasticsearch.
node.name: els-cluster-node01
Dirección de escucha
Elasticsearch se une a localhost (127.0.0.1) y escucha en el número de puerto 9200 para el tráfico HTTP de forma predeterminada. Utiliza el número de puerto 9300 – 9400 para la comunicación entre nodos dentro del clúster.
Para formar un clúster de Elasticsearch multinodo o traer el nodo de Elasticsearch para uso de producción para permitir que las aplicaciones accedan al nodo de Elasticsearch, debe configurar Elasticsearch para escuchar la dirección IP del sistema.
### Listening on particular IPv4 ### network.host: 192.168.0.10
O
### Listen on All IP Address ### network.host: 0.0.0.0
También debe actualizar la configuración a continuación con la dirección IP de su sistema.
discovery.seed_hosts: ["192.168.0.10"]
Reinicie el servicio Elasticsearch.
systemctl restart elasticsearch
Una vez que reinicie el servicio Elasticsearch, espere al menos un minuto para permitir que Elasticsearch se inicie por completo.
Compruebe si Elasticsearch está escuchando en el puerto 9200 en todas las direcciones IP o en una dirección IP particular con el comando netstat.
LEER: Comando netstat no encontrado en CentOS 8 / RHEL 8
netstat -antup | grep -i 9200
Salida:
tcp6 0 0 :::9200 :::* LISTEN 2143/java
Verifique que tanto el Nombre del nodo como el Nombre del clúster se hayan configurado correctamente mediante curl.
curl -X GET 'http://192.168.0.10:9200'
Debería obtener una respuesta como la siguiente.
{ "name" : "els-cluster-node01", "cluster_name" : "els-cluster", "cluster_uuid" : "s6PwCJnoS7e7Pb3QMzkINg", "version" : { "number" : "7.4.0", "build_flavor" : "oss", "build_type" : "rpm", "build_hash" : "22e1767283e61a198cb4db791ea66e3f11ab9910", "build_date" : "2019-09-27T08:36:48.569419Z", "build_snapshot" : false, "lucene_version" : "8.2.0", "minimum_wire_compatibility_version" : "6.8.0", "minimum_index_compatibility_version" : "6.0.0-beta1" }, "tagline" : "You Know, for Search" }
Trabajar con Elasticsearch
Agreguemos algunos datos a Elasticsearch. Puede usar el comando curl para leer, agregar, eliminar y actualizar los datos en Elasticsearch a través del puerto 9200 usando una API RESTful.
Los documentos se almacenan en el siguiente formato
Elasticsearch ⇒ Índices ⇒ Tipos ⇒ Documentos ⇒ Campos
Índices: Plural de un índice, donde se almacenan los datos de Elasticsearch.
Tipos: Contiene varios documentos y es como el tipo de datos.
Documentos: Contiene los campos de datos.
Campos: Datos reales.
Añadir datos
Use el siguiente comando curl para agregar datos a nuestro Elasticsearch.
curl -XPUT 'http://localhost:9200/itzgeek/howtos/1' -H 'Content-Type: application/json' -d ' { "Title" : "Install Elasticsearch On RHEL 8", "Date" : "May 2019", "Tag" : "RHEL" }'
Debería obtener la siguiente respuesta con "resultado":"creado".
{"_index":"itzgeek","_type":"howtos","_id":"1","_version":1,"result":"created","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1}
donde,
itzgeek: El índice del clúster de Elasticsearch.
instrucciones: El tipo de documento
1: La identificación de la entrada en howtos y el índice itzgeek.
Leer datos
Use el siguiente comando para consultar datos en Elasticsearch.
curl -X GET 'http://localhost:9200/itzgeek/howtos/1'
Agregue ?pretty=true al comando anterior para obtener una salida formateada.
curl -X GET 'http://localhost:9200/itzgeek/howtos/1?pretty=true'
La salida se verá como a continuación.
{ "_index" : "itzgeek", "_type" : "howtos", "_id" : "1", "_version" : 1, "_seq_no" : 0, "_primary_term" : 1, "found" : true, "_source" : { "Title" : "Install Elasticsearch On RHEL 8", "Date" : "May 2019", "Tag" : "RHEL" } }
Actualizar datos
Use el siguiente comando para actualizar los datos.
curl -XPUT 'http://localhost:9200/itzgeek/howtos/1' -H 'Content-Type: application/json' -d ' { "Title" : "Install Elasticsearch On RHEL 8", "Date" : "May 2019", "Tag" : "RHEL" }'
No habrá cambios en el índice, el tipo y el documento. Pero, los campos tendrán datos modificados.
La respuesta debería verse como a continuación, contener "_versión":2 y "resultado":"actualizado", lo que significa que el documento ha sido actualizado.
{"_index":"itzgeek","_type":"howtos","_id":"1","_version":2,"result":"updated","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":1,"_primary_term":1}
Eliminar datos
Utilice el siguiente comando para eliminar el documento.
curl -X DELETE 'http://localhost:9200/itzgeek/howtos/1'
La respuesta se verá a continuación. Si se encuentra el documento, obtendrá "resultado":"eliminado".
{"_index":"itzgeek","_type":"howtos","_id":"1","_version":3,"result":"deleted","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":2,"_primary_term":1}
Si no se encuentra el documento, obtendrá "resultado":"not_found".
{"_index":"itzgeek","_type":"howtos","_id":"1","_version":4,"result":"not_found","_shards":{"total":2,"successful":1,"failed":0},"_seq_no":3,"_primary_term":1}
Conclusión
Espero que haya aprendido a instalar Elasticsearch en CentOS 8/RHEL 8 y a agregar, leer, eliminar y actualizar datos en Elasticsearch. También puede configurar un clúster de Elasticsearch de múltiples nodos para manejar una gran cantidad de datos.