(2) Uso de ElasticSearch

1. Uso básico de ES

1. Crea un índice

 Cree un índice de prueba http://localhost:9200/test

 2. Eliminar índice

http://localhost:9200/prueba

3. Ver índice

http://localhost:9200/_all

 4. Agregue nuevos datos al índice.

http://localhost:9200/persona/_doc/

 5. Buscar datos

http://localhost:9200/person/_doc/_search?q=first_name:wj

Pero no encontré ninguna coincidencia y luego descubrí que debía estar escrito como wj8, que se agregó antes.

 2. Uso de Kibana

http://localhost:5601/app/home#/

 Kibana se conecta al ES iniciado de forma predeterminada

 

 

3. El principio de implementación de búsqueda de ES (por actualizar)

 Elasticsearch (base de datos no relacional) ⇒ Índice ⇒ Documento ⇒ Campos

Una instancia de ES en ejecución es un nodo.

4. MySQL, sincronización de datos ES

Cuando los datos de MySQL cambian, elasticsearch también debe cambiar en consecuencia, que es la sincronización de datos entre elasticsearch y mysql .

Hay tres soluciones comunes de sincronización de datos:

1. Llamada sincrónica

  • Ventajas: simple de implementar, tosco

  • Desventajas: alto grado de acoplamiento empresarial

2. Notificación asincrónica

  • Ventajas: bajo acoplamiento, dificultad de implementación media

  • Desventajas: confiar en la confiabilidad de mq

3. Supervisar el registro bin

  • Ventajas: Servicios completamente desacoplados.

  • Desventajas: habilitar binlog aumenta la carga sobre la base de datos y hace que la implementación sea compleja.

 Reimpreso en: Sincronización de datos entre ES y MYSQL_Soy novato, me gusta C y V blog-CSDN blog_es+mysql

Entre ellos, el binlog de middleware de código abierto:

 Actualmente, hay uno mejor en China, Canal, que es la herramienta de sincronización binlog de código abierto de Alibaba. Binlog se puede analizar y los datos analizados se pueden sincronizar con cualquier almacenamiento de destino.

Todavía hay uno

 Sin embargo, go-mysql-elasticsearch tiene requisitos de versión para mysql y es.

  MySQL supported version < 8.0 

  ES supported version < 6.0

En segundo lugar, el sitio web oficial de ES también tiene un logstash.

Logstash es un canal de procesamiento de datos del lado del servidor abierto y gratuito que ingiere datos de múltiples fuentes, los transforma y los envía a su "repositorio" favorito.

Logstash es una herramienta poderosa que se integra con varias implementaciones. Proporciona una gran cantidad de complementos para ayudarlo a analizar, enriquecer, transformar y almacenar en búfer datos de diversas fuentes. Si sus datos requieren un procesamiento adicional que no está disponible en Beats, deberá agregar Logstash a su implementación.
 Dirección de descarga: Logstash 7.17.6 | Elástico

 Necesito conectarme a jdbc, introduje jar.

 5. Segmentador de palabras chinas ES

tokenizador efecto
Estándar Tokenizador predeterminado de ES, clasifica palabras y realiza procesamiento de minúsculas
Simple Divida según lo que no sea letras, luego elimine lo que no sea letras y realice el procesamiento en minúsculas
Detener Filtre según las palabras vacías y realice el procesamiento en minúsculas. Las palabras vacías incluyen the, a y is.
Espacio en blanco Dividir según espacios, el chino no es compatible
Idioma Se dice que proporciona segmentadores de palabras para más de 30 idiomas comunes, pero no es compatible con el chino.
Tamborileo La segmentación de palabras se realiza de acuerdo con expresiones regulares, el valor predeterminado es \W+, que representa no letras.
Palabra clave Sin segmentación de palabras, salida completa

 Tokenizador estándar:

英文:
POST _analyze
{
  "analyzer":"standard",
  "text": "hello world"
}

结果:
{
  "tokens" : [
    {
      "token" : "hello",
      "start_offset" : 0,
      "end_offset" : 5,
      "type" : "<ALPHANUM>",
      "position" : 0
    },
    {
      "token" : "world",
      "start_offset" : 6,
      "end_offset" : 11,
      "type" : "<ALPHANUM>",
      "position" : 1
    }
  ]
}

中文:
POST _analyze
{
  "analyzer":"standard",
  "text": "我是中国人"
}

结果: 拆成单个字了,不理想
{
  "tokens" : [
    {
      "token" : "我",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "<IDEOGRAPHIC>",
      "position" : 0
    },
    {
      "token" : "是",
      "start_offset" : 1,
      "end_offset" : 2,
      "type" : "<IDEOGRAPHIC>",
      "position" : 1
    },
    {
      "token" : "中",
      "start_offset" : 2,
      "end_offset" : 3,
      "type" : "<IDEOGRAPHIC>",
      "position" : 2
    },
    {
      "token" : "国",
      "start_offset" : 3,
      "end_offset" : 4,
      "type" : "<IDEOGRAPHIC>",
      "position" : 3
    },
    {
      "token" : "人",
      "start_offset" : 4,
      "end_offset" : 5,
      "type" : "<IDEOGRAPHIC>",
      "position" : 4
    }
  ]
}

Obviamente, el chino es extremadamente hostil, por lo que el segmentador de palabras IK de código abierto resolverá este problema. IK es actualmente el complemento con mejor soporte chino.

 GitHub - medcl/elasticsearch-analysis-ik: el complemento IK Analysis integra el analizador Lucene IK en elasticsearch y admite diccionario personalizado.

 

POST _analyze
{
  "analyzer":"ik_smart",
  "text": "我是中国人"
}

POST _analyze
{
  "analyzer":"ik_max_word",
  "text": "我是哪里人呢"
}
结果:
{
  "tokens" : [
    {
      "token" : "我",
      "start_offset" : 0,
      "end_offset" : 1,
      "type" : "CN_CHAR",
      "position" : 0
    },
    {
      "token" : "是",
      "start_offset" : 1,
      "end_offset" : 2,
      "type" : "CN_CHAR",
      "position" : 1
    },
    {
      "token" : "中国人",
      "start_offset" : 2,
      "end_offset" : 5,
      "type" : "CN_WORD",
      "position" : 2
    }
  ]
}

Supongo que te gusta

Origin blog.csdn.net/heni6560/article/details/126859115
Recomendado
Clasificación