Inicio rápido con Elasticsearch: agregar, eliminar, modificar y verificar el procesamiento por lotes

prefacio

        Por la renuncia de un compañero en la empresa, necesito retomar el proyecto que originalmente estaba a cargo de él. Estos incluyen bancos de preguntas de escuelas primarias y secundarias y búsquedas de bancos de preguntas que contienen decenas de millones de datos. Para garantizar que la iteración normal de esta parte de la función se pueda completar de manera eficiente en el futuro. Tuve que comenzar a aprender el uso básico de Elasticsearch, lo que llevó a este registro de aprendizaje. Los estudiantes que no conocen esta herramienta también pueden obtener ayuda a través de este artículo.

        Por favor confirme antes de leer:

  1. Entiendes lo que es una línea de comandos de Unix/Linux.
  2. Seguro que comprende qué es una solicitud de red y los conocimientos relacionados con tcp/udp, y ha implementado estas solicitudes de red en cualquier lenguaje de programación.
  3. Entiendes curlel uso de los comandos.
  4. Usted comprende gety putsolicita, comprende REST y RESTful; puede consultar este artículo vinculado "¿ Qué es RESTFUL?" ¿Cuáles son los métodos de solicitud de REST y cuáles son las diferencias? ".

texto

Preparación ambiental

JDK8

        Las herramientas de administración de paquetes, como yum, apt y brew, también se pueden descargar, compilar e instalar a través del código fuente o instalar a través de deb y .exe.

Descargue e inicie ES6

        Soy un Mac, así que solo use brew para descargar directamente.

brew install elasticsearch

        Una vez completada la descarga, ingrese el comando directamente para comenzar.

elasticsearch

uso de comandos

control del estado de salud

curl -XGET 'localhost:9200/_cat/health?v&pretty'

        Los resultados de ejecución son los siguientes.

inserte la descripción de la imagen aquí

ver lista de nodos

curl -XGET 'localhost:9200/_cat/nodes?v&pretty'

inserte la descripción de la imagen aquí

ver lista de índice

        Ejecute el siguiente comando.

curl -XGET 'localhost:9200/_cat/indices?v&pretty'

        Si no hay índice, habrá solo un encabezado de tabla, como se muestra a continuación.

inserte la descripción de la imagen aquí

        Si hay un índice, tendrá el siguiente efecto.

inserte la descripción de la imagen aquí

crear índice

        Para crear un índice llamado "test_index", puede iniciar la siguiente solicitud.

curl -XPUT 'localhost:9200/test_index&pretty'

        Luego puede verificar y confirmar a través de "Ver lista de índice" arriba. El efecto de ejecución es el siguiente.
inserte la descripción de la imagen aquí

Agregar documento de documentación

id = 1Inserte un documento         en el índice "test_index" creado anteriormente , el contenido es el siguiente.

{
    
    
	"content": "Test Data By Funco~~~"
}

        Entonces la línea de comando es la siguiente.

curl -XPUT 'localhost:9200/test_index/doc/1?pretty&pretty' -H 'Content-Type: application/json' -d '{"content": "Test Data By Funco~~~"}'

        Entonces el efecto de ejecución es el siguiente.

inserte la descripción de la imagen aquí

Aviso

  1. Si agrega un documento a un índice que no existe, se creará el índice y el documento se agregará correctamente.
  2. Si el comando se ejecuta repetidamente con la misma identificación, el documento anterior simplemente se reemplazará por el documento nuevo.
  3. El id no es obligatorio. Si no se especifica ningún id, es generará aleatoriamente un id como índice. Independientemente de si se especifica la identificación, la identificación se puede obtener en el resultado devuelto, como los campos en el diagrama de ejecución anterior _id.

obtener documentación

        Obtenga el documento recién agregado aquí id = 1.

curl -XGET 'localhost:9200/test_index/doc/1?pretty&pretty'

        El efecto de ejecución es el siguiente.

inserte la descripción de la imagen aquí

eliminar índice

        Anteriormente, mencionamos que si el índice seleccionado no existe al agregar un documento, se agregará el índice. Entonces, ¿qué pasa si queremos eliminar el índice agregado por error? Se pueden ejecutar los siguientes comandos. Por ejemplo, ahora queremos eliminar un customeríndice llamado .

curl -XDELETE 'localhost:9200/customer?pretty&pretty'

        El efecto de ejecución es el siguiente, y después de que la ejecución sea exitosa, encontrará que el índice ya no existe en la lista a través del comando anterior para ver la lista de índices.

inserte la descripción de la imagen aquí

modificar documento

        Justo ahora, en la sección "Agregar documentos", se menciona que el documento nuevo simplemente reemplazará al documento anterior, pero en este momento, ¿qué pasa si queremos modificar solo una parte del contenido en lugar de reemplazarlo?
        Ahora supongamos que estamos en el índice test_index, hay un documento con id = 1 de la siguiente manera.

inserte la descripción de la imagen aquí

curl -XPOST 'localhost:9200/test_index/doc/1/_update?pretty&pretty' -H 'Content-Type: application/json' -d '{"doc":{"author": "funco"}}'

        El efecto de ejecución es el siguiente. Preste atención al uso de POST para enviar, y los campos -den doc, compare el documento antes de la modificación, datalos parámetros enviados durante la modificación y el documento modificado, puede comprender.

inserte la descripción de la imagen aquí

eliminar documento

        No hay nada que decir al respecto. Envíe la operación REST DELETE y especifique el documento al que apunta una identificación debajo del índice. Por ejemplo, quiero eliminar id = 1el documento en test_index. Puede ejecutar los siguientes comandos.

curl -XDELETE 'localhost:9200/test_index/doc/1?pretty&pretty'

        El efecto de ejecución es el siguiente. Se puede ver que después de eliminar, obtenga el documento nuevamente y el campo del resultado devuelto foundes false.

inserte la descripción de la imagen aquí

procesamiento por lotes

Insertar documentos por lotes

curl -XPOST 'localhost:9200/test_index/doc/_bulk?pretty&pretty' -H 'Content-Type: application/json' -d '
{"index":{"_id": 2}}
{"content":"test content2"}
{"index":{"_id": 3}}
{"content":"test content3"}
'

El efecto de ejecución es el siguiente.
inserte la descripción de la imagen aquí

Eliminar y editar en bloque

        En los siguientes casos, podemos aprender cómo eliminar datos y modificar datos, y realizar diferentes operaciones en una sola solicitud.

        Primero, confirme la existencia deid = 2 registros antes de la ejecución.id = 3

inserte la descripción de la imagen aquí

        Luego, ejecuta el siguiente comando.

 curl -XPOST 'localhost:9200/test_index/doc/_bulk?pretty&pretty' -H 'Content-Type: application/json' -d '
{"update":{"_id": 2}}
{"doc":{"author":"funco"}}
{"delete":{"_id": 3}}
'

        El efecto de ejecución es el siguiente.

inserte la descripción de la imagen aquí

        Finalmente, verifíquelo nuevamente. Puede confirmar que la ejecución fue exitosa.

inserte la descripción de la imagen aquí

buscar

        Tomando como ejemplo la sección anterior "Eliminación y modificación de lotes", antes y después de ejecutar la operación, solo podemos ejecutar dos solicitudes a los documentos con id = 2 e id = 3. ¿Qué pasa si queremos obtener todos los /<index>/doc/<id>documentos GET? Suponiendo que queremos obtener test_indextodos los documentos ahora, podemos ejecutar el siguiente comando.

curl -XGET 'localhost:9200/test_index/_search?q=*&pretty&pretty'

inserte la descripción de la imagen aquí

        Incluso podemos agregar getparámetros sort=_id:ascpara darnos cuenta de que los resultados de la búsqueda _idse ordenan en orden ascendente por campo.

curl -XGET 'localhost:9200/test_index/_search?q=*&sort=_id:asc&pretty&pretty'

inserte la descripción de la imagen aquí

        Cabe señalar que también podemos poner parámetros en datos como en la solicitud anterior. El efecto es el mismo que el del ejemplo anterior. Esto es útil para mantener un estilo de procesamiento consistente cuando usamos código para iniciar solicitudes.

curl -XGET 'localhost:9200/test_index/_search?pretty&pretty' -H 'Content-Type: application/json' -d '
{
"query": {"match_all":{}},
"sort": {"_id": "asc"}
}
'

        El resultado de búsqueda predeterminado es 10. Si desea buscar más datos, debe sizeespecificarlo a través de parámetros.En cuanto a la búsqueda, crearé otro blog para compartir.

Supongo que te gusta

Origin blog.csdn.net/qq_23937195/article/details/98059666
Recomendado
Clasificación