Búsqueda elástica
Introduccion
Elasticsearch , basado en lucene, oculta la complejidad, proporciona una interfaz API tranquila y fácil de usar, una interfaz API Java
Elasticsearch : un motor de búsqueda y análisis distribuido en tiempo real, que se utiliza para búsqueda de texto completo, búsqueda estructurada y análisis
Caracteristicas
- Puede manejar petabytes de datos
- Fusionar búsqueda de texto completo, análisis de datos y tecnologías distribuidas
- Operación simple, fácil implementación y pequeña cantidad de datos
- Proporciona funciones que la base de datos no puede proporcionar.
Índice (índice-base de datos)
El índice contiene un montón de datos de documentos con una estructura similar, un índice contiene muchos documentos y un índice representa un documento similar o idéntico
Tipo (tabla de tipos)
Cada índice puede tener uno o más tipos. Tipo es una clasificación de datos lógica en el índice. Todos los documentos bajo un tipo tienen el mismo campo. Cada tipo contiene un montón de documentos.
Documento (línea de documento)
Un documento es la unidad de datos más pequeña en es, y cada tipo bajo índice puede almacenar múltiples documentos
Campo (columna de campo)
El campo es la unidad más pequeña de es, hay múltiples campos en un documento, cada campo es un campo de datos
Mapeo
Los datos se almacenan en el objeto índice a través de la asignación
Comparación entre Elasticsearch y la base de datos
Base de datos relacional (como MySQL) | Base de datos no relacional (Elasticsearch) |
---|---|
Base de datos | Indice |
Mesa | Tipo |
Fila de datos | Documento |
Columna de datos | Campo |
Esquema de restricción | Mapeo |
Instalar Elasticsearch
(1) Sitio web oficial de Elasticsearch https://www.elastic.co/cn/downloads/elasticsearch descargar paquete de instalación
(2) Descomprima el paquete comprimido elasticsearch-7.1.0-linux-x86_64.tar.gz
tar -xvzf elasticsearch-7.1.0-linux-x86_64.tar.gz
(3) Modificar los permisos de usuario de la carpeta elasticsearch-7.1.0
chown -R destiny elasticsearch-7.1.0
(4) Crear carpetas de datos y registros
mkdir -p data/data
mkdir -p data/logs
(5) Modificar los permisos de usuario de la carpeta de datos
chown -R destiny data
(6) Cambiar usuarios
su destiny
(7) Modifique el archivo elasticsearch.yml en la carpeta de configuración
Configuración del nodo maestro
# ---------------------------------- Cluster -----------------------------------
# 配置集群需要节点上cluster.name配置相同
cluster.name: elasticsearch
# ------------------------------------ Node ------------------------------------
# 配置集群各节点上node.name配置不能相同
node.name: master
# ----------------------------------- Paths ------------------------------------
path.data: /usr/local/elasticsearch/data/data
path.logs: /usr/local/elasticsearch/data/logs
# ----------------------------------- Memory -----------------------------------
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
# ---------------------------------- Network -----------------------------------
network.host: 192.168.138.130
# --------------------------------- Discovery ----------------------------------
discovery.zen.ping.unicast.hosts: ["192.168.138.130","192.168.138.129","192.168.138.128"]
cluster.initial_master_nodes: ["master"]
discovery.zen.minimum_master_nodes: 2
# ---------------------------------- Various -----------------------------------
#action.destructive_requires_name: true
http.cors.enabled: true
http.cors.allow-origin: "*"
configuración de nodo esclavo1
# ---------------------------------- Cluster -----------------------------------
# 配置集群需要节点上cluster.name配置相同
cluster.name: elasticsearch
# ------------------------------------ Node ------------------------------------
# 配置集群各节点上node.name配置不能相同
node.name: slave1
# ----------------------------------- Paths ------------------------------------
path.data: /usr/local/elasticsearch/data/data
path.logs: /usr/local/elasticsearch/data/logs
# ----------------------------------- Memory -----------------------------------
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
# ---------------------------------- Network -----------------------------------
network.host: 192.168.138.129
# --------------------------------- Discovery ----------------------------------
discovery.zen.ping.unicast.hosts: ["192.168.138.130","192.168.138.129","192.168.138.128"]
cluster.initial_master_nodes: ["master"]
discovery.zen.minimum_master_nodes: 2
# ---------------------------------- Various -----------------------------------
#action.destructive_requires_name: true
http.cors.enabled: true
http.cors.allow-origin: "*"
configuración de nodo esclavo2
# ---------------------------------- Cluster -----------------------------------
# 配置集群需要节点上cluster.name配置相同
cluster.name: elasticsearch
# ------------------------------------ Node ------------------------------------
# 配置集群各节点上node.name配置不能相同
node.name: slave2
# ----------------------------------- Paths ------------------------------------
path.data: /usr/local/elasticsearch/data/data
path.logs: /usr/local/elasticsearch/data/logs
# ----------------------------------- Memory -----------------------------------
bootstrap.memory_lock: false
bootstrap.system_call_filter: false
# ---------------------------------- Network -----------------------------------
network.host: 192.168.138.128
# --------------------------------- Discovery ----------------------------------
discovery.zen.ping.unicast.hosts: ["192.168.138.130","192.168.138.129","192.168.138.128"]
cluster.initial_master_nodes: ["master"]
discovery.zen.minimum_master_nodes: 2
# ---------------------------------- Various -----------------------------------
#action.destructive_requires_name: true
http.cors.enabled: true
http.cors.allow-origin: "*"
(8) Cambie el usuario root para modificar el archivo /etc/security/limits.conf para agregar la configuración
* soft nofile 65536
* hard nofile 131072
* soft nproc 4096
* hard nproc 4096
(9) Modifique el archivo /etc/security/limits.d/20-nproc.conf
* soft nproc 4096
(10) Modifique el archivo /etc/sysctl.conf para agregar configuración
vm.max_map_count=655360
(11) ejecutar el comando
sysctl -p
(12) Iniciar búsqueda elástica
./bin/elasticsearch
# 后台运行
./elasticesrarch -d
(13) Prueba elasticsearch
curl http://hadoop1:9200
curl -XGET '192.168.138.130:9200/_cat/health?v&pretty'
(14) Enviar archivos y carpetas relacionados con Elasticsearch a otros servidores
scp -r elasticsearch hadoop2:$PWD
scp /etc/security/limits.conf hadoop2:/etc/security
scp /etc/profile hadoop2:/etc/
scp /etc/security/limits.d/20-nproc.conf hadoop2:/etc/security/
Instalar el plugin Elasticsearch-head
(1) Sitio web https://github.com/mobz/elasticsearch-head/archive/master.zip descargue el complemento head
(2) Descomprima el paquete comprimido elasticsearch-head-master.zip
unzip elasticsearch-head-master.zip
(3) Instale node.js, comando node -v para verificar la instalación
curl -sL https://rpm.nodesource.com/setup_8.x | bash -
yum install -y nodejs
(4) Verificar si la instalación es exitosa
node -v
npm -v
(5) Cambie al directorio elasticsearch-head-master e instale grunt
npm install -g grunt-cli
npm install [email protected] --ignore-scripts
npm install
(6) Modificar el archivo Gruntfile.js
connect: {
server: {
options: {
port: 9100,
hostname: '*',
base: '.',
keepalive: true
}
(6) Modifique el archivo _site / app.js
this.base_uri = this.config.base_uri || this.prefs.get("app-base_uri") || "http://192.168.138.130:9200";
(7) Comience la cabeza
grunt server &
(8) Ingrese http://192.168.138.130:9100/ en el navegador para acceder
Instalar el plugin Elasticsearch-analysis
(1) Sitio web https://github.com/medcl/elasticsearch-analysis-ik/releases/tag/v7.1.0 descargar el complemento de análisis
(2) Crear elasticsearch-analysis-ik-7.1.0 en la carpeta de complementos de elasticsearch
mkdir elasticsearch-analysis-ik-7.1.0
(3) Descomprima el paquete comprimido elasticsearch-analysis-ik-7.1.0.zip
unzip elasticsearch-analysis-ik-7.1.0.zip
(4) Reiniciar elasticsearch
Kibana
(1) Sitio web https://www.elastic.co/cn/downloads/past-releases/kibana-7-1-0 download kibana
(2) Descomprima el paquete comprimido kibana-7.1.0-linux-x86_64.tar.gz
tar -xvzf kibana-7.1.0-linux-x86_64.tar.gz
(3) Modifique el archivo de configuración kibana.yml
server.port: 5601
server.host: "192.168.138.130"
elasticsearch.hosts: ["http://192.168.138.130:9200"]
kibana.index: ".kibana"
(4) Inicie el clúster Elasticsearch
elasticsearch
(5) Kiki
kibana
(6) Entrada de la página web http://192.168.138.130:5601