El motor de búsqueda de Lindorm expone API RESTful compatibles con Elasticsearch. Utilice curl para invocar estas API y gestionar índices de búsqueda y documentos.
Requisitos previos
Antes de empezar, asegúrese de haber completado lo siguiente:
Activado el motor de búsqueda. Para obtener más información, consulte Activation guide.
Agregado la dirección IP de su cliente a la lista de permitidos de la instancia de Lindorm. Para obtener más información, consulte Configure a whitelist.
Conexión al motor de búsqueda
Ejecute el siguiente comando para conectarse y listar todos los índices del clúster:
curl -XGET "http://<url>/_cat/indices?v" -u <username>:<password>
Parámetros
| Parámetro | Descripción |
|---|---|
<url> |
Endpoint compatible con Elasticsearch del motor de búsqueda. Para obtener el endpoint, consulte Elasticsearch-compatible endpoints. |
<username> |
Nombre de usuario para acceder al motor de búsqueda. Obtenga las credenciales predeterminadas en la pestaña Database Connections > Search Engine de la consola. |
<password> |
Selección de un endpoint
|
Despliegue |
Tipo de endpoint |
Acción requerida |
|
Aplicación en ECS |
Endpoint de virtual private cloud (VPC) |
Ninguna: el acceso por VPC ofrece mayor seguridad y menor latencia |
|
Aplicación ejecutándose localmente |
Endpoint de Internet |
Habilite primero el endpoint público: vaya a la pestaña Database Connections > Search Engine y haga clic en Enable Public Endpoint en la esquina superior derecha |
Ejemplo
curl -XGET "http://ld-t4n5668xk31ui****-proxy-search-public.lindorm.rds.aliyuncs.com:30070/_cat/indices?v" -u <username>:<password>
Una conexión exitosa devuelve el siguiente encabezado. Si aún no existen índices, no aparecerán filas debajo de él.
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
Gestión de índices
Los siguientes ejemplos utilizan el endpoint público ld-t4n5668xk31ui****-proxy-search-public.lindorm.rds.aliyuncs.com:30070. Reemplácelo con su endpoint real.
Crear un índice
Cree un índice llamado lindorm_search con 4 shards primarios:
curl -XPUT "http://ld-t4n5668xk31ui****-proxy-search-public.lindorm.rds.aliyuncs.com:30070/lindorm_search" \
-u <username>:<password> \
-H 'Content-Type: application/json' \
-d '{
"settings": {
"number_of_shards": 4
}
}'
Cada nodo del motor de búsqueda admite un máximo de 1,000 shards. Para aumentar este límite, póngase en contacto con el soporte técnico de Lindorm (ID de DingTalk: s0s3eg3).
Una operación exitosa devuelve lo siguiente:
{"acknowledged":true,"shards_acknowledged":true,"index":"lindorm_search"}
acknowledged: Confirma que el clúster procesó la solicitud.shards_acknowledged: Confirma que todos los shards primarios se iniciaron antes de que se agotara el tiempo de espera.index: Nombre del índice creado.
Configurar el mapping del índice
Defina los tipos de campo para el índice lindorm_search. El siguiente ejemplo establece id como entero largo, name como palabra clave y describe como texto completo:
curl -XPUT "http://ld-t4n5668xk31ui****-proxy-search-public.lindorm.rds.aliyuncs.com:30070/lindorm_search/_doc/_mapping" \
-u <username>:<password> \
-H 'Content-Type: application/json' \
-d '{
"_doc": {
"properties": {
"id": {"type": "long"},
"name": {"type": "keyword"},
"describe": {"type": "text"}
}
}
}'
Una operación exitosa devuelve lo siguiente:
{"_index":"lindorm_search","_type":"_doc","_id":"_mapping","_version":1,"result":"created","_shards":{"total":1,"successful":1,"failed":0},"_seq_no":0,"_primary_term":1}
Listar índices
curl -XGET "http://ld-t4n5668xk31ui****-proxy-search-public.lindorm.rds.aliyuncs.com:30070/_cat/indices?v" \
-u <username>:<password>
Salida de ejemplo:
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
green open lindorm_search lindorm_search 1 0 0 0 208b 208b
Si no existen índices, solo se devuelve la fila de encabezado.
Eliminar un índice
curl -XDELETE "http://ld-t4n5668xk31ui****-proxy-search-public.lindorm.rds.aliyuncs.com:30070/lindorm_search" \
-u <username>:<password>
Una eliminación exitosa devuelve lo siguiente:
{"acknowledged":true}
Gestión de documentos
Indexar un solo documento
Indexe un documento con ID 1 en lindorm_search:
curl -XPOST "http://ld-t4n5668xk31ui****-proxy-search-public.lindorm.rds.aliyuncs.com:30070/lindorm_search/_doc/1" \
-u <username>:<password> \
-H 'Content-Type: application/json' \
-d '{
"id": 100,
"name": "shenzhen",
"describe": "just a test"
}'
Indexar varios documentos
Utilice la API bulk para indexar varios documentos en una sola solicitud. Cada documento requiere dos líneas: una línea de acción y una línea de origen.
curl -XPOST "http://ld-t4n5668xk31ui****-proxy-search-public.lindorm.rds.aliyuncs.com:30070/_bulk" \
-u <username>:<password> \
-H 'Content-Type: application/json' \
-d '
{ "index": { "_index": "lindorm_search", "_type": "_doc", "_id": "1" } }
{"id":200,"name":"shanghai","describe":"just"}
{ "index": { "_index": "lindorm_search", "_type": "_doc", "_id": "2" } }
{"id":300,"name":"beijing","describe":"good luck"}
'
Utilice la API bulk cuando indexe grandes volúmenes de datos, ya que reduce la sobrecarga de red en comparación con las solicitudes individuales.
Obtener un documento por ID
Recupere el documento con ID 1:
curl -XGET "http://ld-t4n5668xk31ui****-proxy-search-public.lindorm.rds.aliyuncs.com:30070/lindorm_search/_doc/1?pretty" \
-u <username>:<password>
Salida de ejemplo:
{
"_index" : "lindorm_search",
"_id" : "1",
"_version" : 1,
"_seq_no" : 0,
"_primary_term" : 1,
"found" : true,
"_source" : {
"id" : 100,
"name" : "shenzhen",
"describe" : "just a test"
}
}
found:trueindica que el documento existe._version: Se incrementa cada vez que se actualiza el documento._source: Datos originales del documento que usted indexó.
Pasos siguientes
Para consultar la lista completa de API REST compatibles, consulte la referencia de API REST de Elasticsearch.