Primeros pasos con ElasticSearch (tutorial de nivel de niñera)

Este capítulo presentará: el rol de ElasticSearch, construir el entorno de elasticsearch (Windows/Linux), construir el clúster de ElasticSearch, instalar y usar el complemento de cliente visual elasticsearch-head, instalar y usar el tokenizador IK; la operación de ElasticSearch presentada en este capítulo se basa en el formulario Restful (utilizando el formulario de solicitud http), consulte la siguiente parte para conocer la operación del código Java

@

1. Introducción a la búsqueda elástica

Elaticsearch, conocido como es para abreviar, es un motor de búsqueda de texto completo distribuido altamente escalable de código abierto, que puede almacenar y recuperar datos casi en tiempo real;
tiene datos de nivel . es también está desarrollado en Java y usa Lucene como núcleo para implementar
todas las funciones de indexación y búsqueda, pero su propósito es ocultar la complejidad de Lucene a través de una API RESTful simple, lo que facilita la búsqueda de texto completo
.

1.1 Casos de uso de ElasticSearch

  • A principios de 2013, GitHub abandonó Solr y adoptó ElasticSearch para la búsqueda a nivel de PB. "GitHub usa ElasticSearch para buscar 20 TB
    de datos, incluidos 1300 millones de archivos y 130 000 millones de líneas de código"
  • Wikipedia: Inicie la arquitectura de búsqueda central basada en elasticsearch
  • SoundCloud: "SoundCloud utiliza ElasticSearch para proporcionar servicios de búsqueda de música instantáneos y precisos para 180 millones de usuarios"
  • Baidu: Baidu actualmente utiliza ampliamente ElasticSearch para el análisis de datos de texto, recopila varios datos de índice y datos definidos por el usuario en todos los servidores de Baidu, y realiza análisis multidimensionales y muestra varios datos para ayudar a localizar y analizar excepciones de instancias o excepciones de nivel empresarial. . Actualmente, cubriendo más de 20 líneas de negocios dentro de Baidu (incluidos casio, análisis en la nube, alianza de redes, pronósticos, biblioteca, número directo, billetera, control de riesgos, etc.), un solo clúster tiene un máximo de 100 máquinas, 200 nodos ES y importa más de 30 TB de datos todos los días
  • Sina usa ES para analizar y procesar 3200 millones de registros en tiempo real
  • Ali usa ES para construir el propio sistema de recopilación y análisis de registros de Wacai

1.2 Comparación entre ElasticSearch y solr

  • Solr usa Zookeeper para la gestión distribuida, mientras que Elasticsearch tiene una función de gestión de coordinación distribuida;
  • Solr admite datos en más formatos, mientras que Elasticsearch solo admite el formato de archivo json;
  • Solr ofrece oficialmente más funciones, mientras que Elasticsearch se enfoca más en las funciones principales, y la mayoría de las funciones avanzadas son proporcionadas por complementos de terceros;
  • Solr funciona mejor que Elasticsearch en aplicaciones de búsqueda tradicionales, pero es significativamente menos eficiente que Elasticsearch en aplicaciones de búsqueda en tiempo real.

2. Instalación de ElasticSearch (ventanas)

Descarga el paquete comprimido:

ElasticSearch的官方地址:  Elasticsearch: el motor oficial de análisis y búsqueda distribuida | Elástico

2.1 instalación

Nota: es se desarrolla usando java, usando lucene como núcleo, ¡y el entorno java debe configurarse! (jdk1.8 y superior)

Similar a tomcat, simplemente descomprímalo directamente. Su estructura de directorios es la siguiente:

es01

2.2 Modificar el archivo de configuración

  • Modifique el archivo conf\jvm.option
将#-Xms2g                                  
  #-Xmx2g修改成为:
-Xms340m
-Xmx340m
否则因为虚拟机内存不够无法启动
  • Modifique el archivo conf\elasticsearch.yml
elasticsearch-5.6.8\config\elasticsearch.yml中末尾加入:
http.cors.enabled: true
http.cors.allow-origin: "*"
network.host: 127.0.0.1
目的是使ES支持跨域请求

2.3 inicio

Haga clic en elasticsearch.bat en el directorio bin en ElasticSearch para comenzar, y la información de registro que se muestra en la consola es la siguiente:

es02

Nota: 9300 es el puerto de comunicación tcp, los clústeres es usan tcp para la comunicación y 9200 es el puerto de protocolo http.

Podemos acceder en el navegador:

es03

2.4 Instalar el complemento gráfico

De lo anterior, se puede encontrar que ElasticSearch es diferente de la propia interfaz gráfica de Solr. Podemos completar el efecto de la interfaz gráfica y ver los datos del índice instalando el complemento principal de ElasticSearch. Hay dos formas de instalar complementos, instalación en línea e instalación local. Este documento utiliza el método de instalación local para instalar el complemento del cabezal. Elasticsearch-5-* y las versiones superiores necesitan instalar node y grunt para instalar head.

Después de descargar el paquete comprimido, descomprímalo.

Haga doble clic para instalar e ingrese node -v a través de cmd para ver el número de versión

es04

  • Instale grunt como un comando global, Grunt es una herramienta de construcción de proyectos basada en Node.js

Ingrese en cmd:

npm install -g grunt-cli

es05

Dado que está accediendo a un servidor externo, si la velocidad de descarga es lenta, puede cambiar al espejo de Taobao

npm install -g cnpm –registry=https://registry.npm.taobao.org

Para uso posterior, simplemente reemplace npm xxx con cnpm xxx

Comprobar si la instalación es exitosa

npm config get registry 

es29
Nota: El uso posterior debe reemplazarse npmcon cnpm.

  • cabeza de inicio

Ingrese al directorio principal del complemento, abra cmd e ingrese:

>npm install
>grunt server

es06

Abra el navegador e ingrese http://localhost:9100

es07

3. Conceptos relacionados con ES

3.1 Resumen (importante)

Elasticsearch está orientado a documentos, lo que significa que puede almacenar objetos o documentos completos. Sin embargo, no
solo almacena, sino que también indexa (index) el contenido de cada documento para que pueda ser buscado. En Elasticsearch, puede indexar, buscar, ordenar y filtrar documentos (en lugar de filas y columnas de datos). En comparación con las bases de datos relacionales tradicionales, Elasticsearch es el siguiente:

Base de datos relacional ‐> Bases de datos ‐> Tablas ‐> Filas ‐> Columnas
Elasticsearch ‐> Índices ‐> Tipos ‐> Documentos ‐> Campos

3.2 Conceptos básicos

1) índice índice -

Un índice es una colección de documentos con características algo similares. Por ejemplo, podría tener un índice para datos de clientes, otro índice para catálogos de productos y otro índice para datos de pedidos. Un índice se identifica con un nombre (debe ser todo en minúsculas), y cuando queramos indexar, buscar, actualizar y borrar documentos correspondientes a este índice, utilizaremos ese nombre. En un clúster, se puede definir cualquier número de índices. Se puede comparar con la base de datos en mysql

2) tipo tipo

En un índice, puede definir uno o más tipos. Un tipo es una clasificación/partición lógica de su índice, cuya semántica depende totalmente de usted. Normalmente, un tipo se define para documentos con un conjunto común de campos. Por ejemplo, supongamos que ejecuta una plataforma de blogs y almacena todos sus datos en un índice. En este índice, puede definir un tipo para datos de usuario, otro tipo para datos de blog y, por supuesto, otro tipo para datos de comentarios. Se puede comparar con tablas en mysql

3) Campo archivado

Es equivalente al campo de la tabla de datos, que clasifica e identifica los datos del documento según diferentes atributos.

4) Mapeo de mapas

El mapeo consiste en hacer algunas restricciones en la forma de procesar los datos y las reglas, como el tipo de datos de un determinado campo, el valor predeterminado, el analizador, si está indexado, etc. Estas son todas las configuraciones que se pueden establecer en el mapeo, y otros son para procesar datos en es El uso de la configuración de reglas también se denomina mapeo. El procesamiento de datos de acuerdo con reglas óptimas puede mejorar en gran medida el rendimiento, por lo que es necesario establecer un mapeo y es necesario pensar en cómo establecer un mapeo para mejorar el rendimiento. . Es equivalente al proceso de crear una tabla en mysql, establecer la clave principal y la clave externa, etc.

5) documento documento

Un documento es una unidad básica de información que se puede indexar. Por ejemplo, puede tener un documento para un cliente determinado, un documento para un producto determinado y, por supuesto, un documento para un pedido determinado. Los documentos se expresan en formato JSON (Notación de objetos Javascript), y JSON es un formato de interacción de datos de Internet omnipresente. En un índice/tipo, puede almacenar tantos documentos como desee. Tenga en cuenta que aunque un documento existe físicamente en un índice, el documento debe ser indexado/asignado a un tipo de índice. Inserte la biblioteca de índice en unidades de documentos, de forma análoga a una fila de datos en la base de datos

6) racimo racimo

Un clúster está organizado por uno o más nodos, que en conjunto contienen todos los datos y proporcionan funciones de indexación y búsqueda en conjunto. Un clúster se identifica con un nombre único, que de forma predeterminada es "elasticsearch". Este nombre es importante porque un nodo solo puede unirse a un clúster especificando su nombre.

7) nodo nodo

Un nodo es un servidor en el clúster que, como parte del clúster, almacena datos y participa en las funciones de indexación y búsqueda del clúster. De manera similar a los clústeres, un nodo también se identifica por un nombre. De manera predeterminada, este nombre es el nombre de un personaje aleatorio de Marvel Comics que se asigna al nodo al inicio. Este nombre es muy importante para el trabajo de administración, porque en este proceso de administración, determinará qué servidores de la red corresponden a qué nodos en el clúster de Elasticsearch.

Un nodo puede unirse a un clúster específico configurando el nombre del clúster. De manera predeterminada, cada nodo está programado para unirse a un clúster llamado "elasticsearch", lo que significa que si inicia varios nodos en su red y asume que pueden descubrirse entre sí, automáticamente formarán y se unirán a un clúster llamado "elasticsearch".

En un clúster, puede tener tantos nodos como desee. Además, si actualmente no tiene ningún nodo de Elasticsearch ejecutándose en su red, iniciar un nodo en este momento creará y se unirá a un clúster llamado "elasticsearch" de manera predeterminada.

8) fragmentos y réplicas de fragmentación y replicación

Un índice puede almacenar grandes cantidades de datos más allá de las limitaciones de hardware de un solo nodo. Por ejemplo, un índice con mil millones de documentos ocupa 1 TB de espacio en disco y ningún nodo tiene un espacio en disco tan grande, o un solo nodo procesa solicitudes de búsqueda y la respuesta es demasiado lenta. Para resolver este problema, Elasticsearch brinda la capacidad de dividir el índice en varias partes, estas partes se denominan fragmentos. Cuando crea un índice, puede especificar la cantidad de fragmentos que desea. Cada fragmento es en sí mismo un "índice" totalmente funcional e independiente que se puede colocar en cualquier nodo del clúster. La fragmentación es importante por dos razones principales: 1) Le permite dividir/escalar horizontalmente su capacidad de contenido. 2) Le permite realizar operaciones paralelas distribuidas en fragmentos (potencialmente, en múltiples nodos), mejorando el rendimiento/rendimiento.

En cuanto a cómo se distribuye un fragmento y cómo se agregan sus documentos a las solicitudes de búsqueda, Elasticsearch lo administra completamente, lo cual es transparente para usted como usuario.

En un entorno de red/nube donde las fallas pueden ocurrir en cualquier momento, donde un fragmento/nodo de alguna manera se desconecta o desaparece por cualquier motivo, es muy útil tener un mecanismo de conmutación por error y es muy recomendable. Para este propósito, Elasticsearch te permite crear una o más copias de un fragmento, estas copias se denominan fragmentos replicados o simplemente réplicas.

La replicación es importante por dos razones principales: Proporciona alta disponibilidad en caso de falla del fragmento/nodo. Por este motivo, es muy importante tener en cuenta que los fragmentos replicados nunca se colocan en el mismo nodo que el fragmento original/primario. Escale su volumen/rendimiento de búsqueda, ya que las búsquedas pueden ejecutarse en todas las réplicas en paralelo. En resumen, cada índice se puede dividir en varios fragmentos. Un índice también se puede replicar 0 veces (lo que significa que no hay replicación) o varias veces. Una vez replicado, cada índice tiene un fragmento principal (el fragmento original del que se copió) y un fragmento replicado (una copia del fragmento principal). El número de fragmentos y réplicas se puede especificar en el momento de la creación del índice. Puede cambiar dinámicamente la cantidad de réplicas en cualquier momento después de crear el índice, pero no puede cambiar la cantidad de fragmentos después.

De manera predeterminada, cada índice en Elasticsearch se fragmenta con 5 fragmentos primarios y 1 réplica, lo que significa que si tiene al menos dos nodos en su clúster, su índice tendrá 5 fragmentos primarios y otros 5 fragmentos replicados (1 copia completa), por un total de 10 fragmentos por índice.

4. Operación del cliente ElasticSearch

La parte anterior es una parte teórica. En el desarrollo real, existen principalmente tres formas de servir como cliente de es service:

  • Use el complemento elasticsearch-head
  • Use la interfaz Restful proporcionada por elasticsearch para acceder directamente
  • Utilice la API proporcionada por elasticsearch para acceder

4.1 Acceso directo mediante la interfaz Restful

Necesitamos usar solicitudes http e introducir dos herramientas de prueba de interfaz: postman y Talend API tester.

  • Instalación del probador de API de Talend:

Este es un complemento de Chrome, no requiere descarga;

es08

  • Instalación de cartero:

Sitio web oficial del cartero: https://www.getpostman.com

es09

4.2 Utilice el probador de API de Talend para realizar operaciones de cliente es.

1) Sintaxis de la interfaz de Elasticsearch

curl ‐X<VERB> '<PROTOCOL>://<HOST>:<PORT>/<PATH>?<QUERY_STRING>' ‐d '<BODY>'

en:

es10

2) Cree un índice de biblioteca de índice y agregue mapeo------PUT

PUT 

Cuerpo de la solicitud:

artículo: tipo tipo; es equivalente a la definición de campos en esta tabla en esta biblioteca de índice llamada artículo definida a continuación,

Los campos no están indexados de forma predeterminada;

analizador: el tokenizador utiliza el tokenizador estándar

{
    "mappings": {
        "article": {
            "properties": {
                "id": {
                    "type": "long",
                    "store": true,
                    "index": "not_analyzed"
                },
                "title": {
                    "type": "text",
                    "store": true,
                    "index": "analyzed",
                    "analyzer": "standard"
                },
                "content": {
                    "type": "text",
                    "store": true,
                    "index": "analyzed",
                    "analyzer": "standard"
                }
            }
        }
    }
}

es11

Ver en la herramienta de visualización elasticsearch-head:

es12

3) Primero cree el índice de índice, luego agregue el mapeo ----PUT

Podemos configurar la información de mapeo al crear el índice, por supuesto, también podemos crear el índice primero y luego configurar el mapeo.
En el paso anterior, sin configurar la información de mapeo, use directamente el método put para crear un índice y luego configure la información de mapeo.
URL solicitada:

PUT   http://127.0.0.1:9200/hello2/article/_mapping

Cuerpo de la solicitud:

{
     "article": {
            "properties": {
                "id": {
                    "type": "long",
                    "store": true,
                    "index": "not_analyzed"
                },
                "title": {
                    "type": "text",
                    "store": true,
                    "index": "analyzed",
                    "analyzer": "standard"
                },
                "content": {
                    "type": "text",
                    "store": true,
                    "index": "analyzed",
                    "analyzer": "standard"
                }
            }
        }
}

es13

4) Eliminar índice de índice ----ELIMINAR

Solicitud de URL:

DELETE  http://127.0.0.1:9200/hello2

es14

5) Cree un documento de documento (agregue contenido a la biblioteca de índices) --- POST

Solicitud de URL:

POST  http://127.0.0.1:9200/hello/article/1

Cuerpo de la solicitud:

{
    "id": 1,
    "title": "ElasticSearch是一个基于Lucene的搜索服务器",
    "content": "它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。"
}

es15

Ver en elasticsearch-head:

es16

Tenga en cuenta que generalmente asignamos el mismo valor a _id e id.

6) Modificar el contenido del documento ---- POST

Solicitud de URL:

POST http://127.0.0.1:9200/hello/article/1

es17

Ver en elasticsearch-head:

es18

7) Eliminar documento documento---ELIMINAR

Solicitud de URL:

DELETE http://127.0.0.1:9200/hello/article/2

es19

8) Consultar documento documento-----OBTENER

Hay tres formas de consultar documentos:

  • Consulta por id;
  • Consulta por palabra clave
  • De acuerdo con el contenido de entrada, segmentación de palabras primero y luego consulta
I. Consulta por ID

Solicitud de URL:

GET http://127.0.0.1:9200/hello/article/1

es20

ii. Consulta basada en palabras clave - consulta de términos

Solicitud de URL:

POST http://127.0.0.1:9200/hello/article/_search

Cuerpo de la solicitud:

{
    "query": {
        "term": {
            "title": "搜"
        }
    }
}

tienes 21

iii. Documento de consulta - consulta de cadena de consulta

Solicitud de URL:

POST   http://127.0.0.1:9200/hello/article/_search

Cuerpo de la solicitud:

{
    "query": {
        "query_string": {
            "default_field": "title",
            "query": "搜索服务器"
        }
    }
}

Especifique:
qué campo consultar,
cuál es el contenido a consultar;

Primero segmentará el contenido de la consulta y luego consultará

es22

4.3 Use elasticsearch-head para la operación del cliente es

La herramienta de solicitud http está integrada en elasticsearch-head, que puede proporcionar una consulta de revisión:
es27

5. Uso integrado de IK tokenizer y Elasticsearch

El tokenizador anterior usa un tokenizador estándar, que no es muy amigable con la segmentación de palabras chinas. Por ejemplo, si soy un programador, obtengo:

GET http://127.0.0.1:9200/_analyze?analyzer=standard&pretty=true&text=我是程序员
"tokens":[
{
    
    "token": "我", "start_offset": 0, "end_offset": 1, "type": "<IDEOGRAPHIC>",…},
{
    
    "token": "是", "start_offset": 1, "end_offset": 2, "type": "<IDEOGRAPHIC>",…},
{
    
    "token": "程", "start_offset": 2, "end_offset": 3, "type": "<IDEOGRAPHIC>",…},
{
    
    "token": "序", "start_offset": 3, "end_offset": 4, "type": "<IDEOGRAPHIC>",…},
{
    
    "token": "员", "start_offset": 4, "end_offset": 5, "type": "<IDEOGRAPHIC>",…}
]

El participio que esperamos lograr es: I, is, program, programer.

Hay muchos separadores de palabras compatibles con chino, separador de palabras, Paoding Jieniu, separador de palabras Ansj, la siguiente nota es el uso del separador de palabras IK.

5.1 Instalación del tokenizador IK

1) Dirección de descarga: https://github.com/medcl/elasticsearch-analysis-ik/releases

2) Descomprima, copie la carpeta elasticsearch descomprimida a elasticsearch-5.6.8\plugins y cambie el nombre de la carpeta a analysis-ik (también hay otros nombres disponibles, el propósito no es cambiar el nombre)

3) Reinicie ElasticSearch para cargar el tokenizador IK

es23

5.2 Prueba del tokenizador IK

IK proporciona segmentación de dos palabras ik_smart e ik_max_word

Entre ellos, ik_smart es la segmentación mínima e ik_max_word es la división más detallada.

Vamos a probarlo:

  • Segmentación mínima: introduzca la dirección en el navegador:
GET   http://127.0.0.1:9200/_analyze?analyzer=ik_smart&pretty=true&text=我是程序员

resultado devuelto:

"tokens":[
{
    
    "token": "我", "start_offset": 0, "end_offset": 1, "type": "CN_CHAR",…},
{
    
    "token": "是", "start_offset": 1, "end_offset": 2, "type": "CN_CHAR",…},
{
    
    "token": "程序员", "start_offset": 2, "end_offset": 5, "type": "CN_WORD",…}
]
  • La última segmentación: ingrese la dirección en el navegador:
GET   http://127.0.0.1:9200/_analyze?analyzer=ik_max_word&pretty=true&text=我是程序员

resultado devuelto:

"tokens":[
{
    
    "token": "我", "start_offset": 0, "end_offset": 1, "type": "CN_CHAR",…},
{
    
    "token": "是", "start_offset": 1, "end_offset": 2, "type": "CN_CHAR",…},
{
    
    "token": "程序员", "start_offset": 2, "end_offset": 5, "type": "CN_WORD",…},
{
    
    "token": "程序", "start_offset": 2, "end_offset": 4, "type": "CN_WORD",…},
{
    
    "token": "员", "start_offset": 4, "end_offset": 5, "type": "CN_CHAR",…}
]

6. Clúster de ElasticSearch

El clúster ES es un sistema distribuido de tipo P2P (que utiliza el protocolo de chismes). Excepto por la gestión del estado del clúster, todas las demás solicitudes se pueden enviar a cualquier nodo del clúster. Este nodo puede averiguar a qué nodos se deben reenviar y comunicarse directamente. con estos nodos. Por lo tanto, desde la perspectiva de la arquitectura de red y la configuración del servicio, la configuración requerida para construir un clúster es extremadamente simple. Antes de Elasticsearch 2.0, en una red sin obstáculos, todos los nodos configurados con el mismo nombre de clúster pertenecían automáticamente a un clúster. Después de la versión 2.0, basado en consideraciones de seguridad, para evitar los problemas causados ​​por un entorno de desarrollo demasiado casual, a partir de la versión 2.0, el método de descubrimiento automático predeterminado se cambia al método de unidifusión (unicast). Las direcciones de varios nodos se proporcionan en la configuración y ES los considera enrutadores de chismes para completar el descubrimiento de clústeres. Dado que esta es solo una pequeña función en ES, el rol de enrutador de chismes no necesita configurarse por separado, y cada nodo ES puede asumirlo. Por lo tanto, en un clúster que usa el modo unicast, cada nodo se puede configurar con la misma lista de varios nodos como un enrutador.

No hay límite para el número de nodos en un clúster, generalmente dos o más nodos pueden considerarse como un clúster. Generalmente en términos de alto rendimiento y alta disponibilidad

Considere que la cantidad de nodos en un clúster general es 3 o más.

6.1 Construcción de clústeres (Windows)

1) Prepare tres servidores de búsqueda elástica:

es24

2) Modificar la configuración de cada servidor

Modifique el archivo de configuración \comf\elasticsearch.yml:

#Node节点1:

http.cors.enabled: true
http.cors.allow-origin: "*"
#节点1的配置信息:
#集群名称,保证唯一
cluster.name: my-elasticsearch
#节点名称,必须不一样
node.name: node-1
#必须为本机的ip地址
network.host: 127.0.0.1
#服务端口号,在同一机器下必须不一样
http.port: 9201
#集群间通信端口号,在同一机器下必须不一样
transport.tcp.port: 9301
#设置集群自动发现机器ip集合
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]

#Node节点2:

http.cors.enabled: true
http.cors.allow-origin: "*"
#节点1的配置信息:
#集群名称,保证唯一
cluster.name: my-elasticsearch
#节点名称,必须不一样
node.name: node-2
#必须为本机的ip地址
network.host: 127.0.0.1
#服务端口号,在同一机器下必须不一样
http.port: 9202
#集群间通信端口号,在同一机器下必须不一样
transport.tcp.port: 9302
#设置集群自动发现机器ip集合
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]

#Node节点3:

http.cors.enabled: true
http.cors.allow-origin: "*"
#节点1的配置信息:
#集群名称,保证唯一
cluster.name: my-elasticsearch
#节点名称,必须不一样
node.name: node-3
#必须为本机的ip地址
network.host: 127.0.0.1
#服务端口号,在同一机器下必须不一样
http.port: 9203
#集群间通信端口号,在同一机器下必须不一样
transport.tcp.port: 9303
#设置集群自动发现机器ip集合
discovery.zen.ping.unicast.hosts: ["127.0.0.1:9301","127.0.0.1:9302","127.0.0.1:9303"]

3. Inicie cada servidor de nodo

Puede iniciar elasticsearch.bat debajo de cada servidor por separado.Aquí uso el archivo por lotes en Windows:

Cree un nuevo archivo elasticsearch_cluster_start.bat y agregue el siguiente contenido:

El formato es: inicio "el nombre del archivo que se iniciará" "la ruta del archivo" & significa continuar la ejecución después de iniciar A.

start "elasticsearch.bat" "F:\Soft\ES-cluster\cluster01\bin\elasticsearch.bat" &
start "elasticsearch.bat" "F:\Soft\ES-cluster\cluster02\bin\elasticsearch.bat" &
start "elasticsearch.bat" "F:\Soft\ES-cluster\cluster03\bin\elasticsearch.bat" 

El procesamiento por lotes en Windows no se explicará en este capítulo.

4. Prueba de conglomerados

Mientras cualquier nodo en el clúster esté conectado, su modo de operación es básicamente el mismo que el de la versión independiente, y solo se cambia la estructura de almacenamiento.

Agregar índices y mapas

PUT  http://127.0.0.1:9201/hello

Cuerpo de la solicitud:

{
    "mappings": {
    "article": {
        "properties": {
            "id": {
                "type": "long",
                "store": true,
                 "index": "not_analyzed"
            },
            "title": {
                "type": "text",
                "store": true,
                "index": true,
                "analyzer": "ik_smart"
            },
            "content": {
                "type": "text",
                "store": true,
                "index": true,
                "analyzer": "ik_smart"
            }
        }
    }
    }
}

resultado devuelto:

{
"acknowledged": true,
"shards_acknowledged": true,
"index": "hello"
}

añadir documento

POST   http://127.0.0.1:9201/hello/article/1

Cuerpo de la solicitud:

{
"id":1,
"title":"ElasticSearch是一个基于Lucene的搜索服务器",
"content":"它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。Elasticsearch是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。设计用于云计算中,能够达到实时搜索,稳定,可靠,快速,安装使用方便。"
}

valor de retorno:

{
"_index": "hello",
"_type": "article",
"_id": "1",
"_version": 1,
"result": "created",
"_shards":{
"total": 2,
"successful": 2,
"failed": 0
},
"created": true
}

Ver en elasticsearch-head:

es25

es26

7. Instalación de ElasticSearch (Linux)

1) Asegúrese de haber instalado el entorno Java

Puede copiar directamente el pasado en Windows, no es necesario instalarlo, solo descomprimir.

tar -zxf elasticsearch-6.3.2.tar.gz

2) Modificar el archivo de configuración

  • Modifique el archivo conf\jvm.option
将#-Xms2g                                  
  #-Xmx2g修改成为:
-Xms340m
-Xmx340m
否则因为虚拟机内存不够无法启动
  • Modifique el archivo conf\elasticsearch.yml
#elasticsearch-5.6.8\config\elasticsearch.yml中末尾加入:
http.cors.enabled: true
http.cors.allow-origin: "*"
network.host: 127.0.0.1
目的是使ES支持跨域请求

3) empezar

Nota: En el entorno de Linux, los usuarios root no pueden iniciar directamente (el motivo son problemas de seguridad)

  • Agregar usuario:
[root@coderxz bin]# useradd rxz -p rongxianzhao
[root@coderxz bin]# chown -R rxz:rxz /usr/local/elasticsearch/*
[root@coderxz bin]# su rxz
  • implementar:
#注意:切换为非root用户执行哦
[rxz@coderxz bin]$ ./elasticsearch
  • Compruebe el estado de ejecución:
检测是否运行:jps (显示所有的Java进程pid的命令)
	              ps aux|grep elasticsearch
				  [root@coderxz ~]# curl -X GET 'http://localhost:9200'

4) Para configurar el acceso a la red externa al puerto 9200, se debe abrir el puerto del servidor

Modifique el archivo de configuración config/elasticsearch.yml

red.host: 0.0.0.0

5) Inicio de fondo

Si instaló Elasticsearch en un servidor y desea desarrollar en su máquina local, probablemente necesitará mantener Elasticsearch en ejecución cuando cierre la terminal. La forma más fácil es usar nohup. Primero presione Ctrl + C para detener el Elasticsearch que se está ejecutando actualmente y use el siguiente comando para ejecutar Elasticsearch en su lugar.

nohup ./bin/elasticsearch&

Supongo que te gusta

Origin blog.csdn.net/m0_60961651/article/details/132272614
Recomendado
Clasificación