O mecanismo de busca do Lindorm expõe APIs RESTful compatíveis com Elasticsearch. Use curl para chamar essas APIs e gerencie índices de busca e documentos.
Pré-requisitos
Antes de começar, verifique se você:
Ativou o mecanismo de busca. Para mais informações, consulte Guia de ativação.
Adicionou o endereço IP do cliente à lista de permissões da instância Lindorm. Para mais informações, consulte Configure uma lista de permissões.
Conectar ao mecanismo de busca
Execute o comando a seguir para se conectar e listar todos os índices no cluster:
curl -XGET "http://<url>/_cat/indices?v" -u <username>:<password>
Parâmetros
| Parâmetro | Descrição |
|---|---|
<url> |
Endpoint do mecanismo de busca compatível com Elasticsearch. Para obter o endpoint, consulte Endpoints compatíveis com Elasticsearch. |
<username> |
Nome de usuário para acessar o mecanismo de busca. Obtenha as credenciais padrão na aba Database Connections > Search Engine no console. |
<password> |
Escolha do endpoint
|
Implantação |
Tipo de endpoint |
Ação necessária |
|
Aplicação no ECS |
Endpoint de virtual private cloud (VPC) |
Nenhuma — o acesso via VPC oferece maior segurança e menor latência |
|
Aplicação executada localmente |
Endpoint de Internet |
Ative primeiro o endpoint público: acesse a aba Database Connections > Search Engine e clique em Enable Public Endpoint no canto superior direito |
Exemplo
curl -XGET "http://ld-t4n5668xk31ui****-proxy-search-public.lindorm.rds.aliyuncs.com:30070/_cat/indices?v" -u <username>:<password>
Uma conexão bem-sucedida retorna o cabeçalho a seguir. Se ainda não houver índices, nenhuma linha aparecerá abaixo dele.
health status index uuid pri rep docs.count docs.deleted store.size pri.store.size
Gerencie índices
Os exemplos a seguir usam o endpoint público ld-t4n5668xk31ui****-proxy-search-public.lindorm.rds.aliyuncs.com:30070. Substitua-o pelo seu endpoint real.
Crie um índice
Crie um índice chamado lindorm_search com 4 shards primários:
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 nó no mecanismo de busca suporta no máximo 1.000 shards. Para aumentar esse limite, entre em contato com o suporte técnico do Lindorm (ID do DingTalk: s0s3eg3).
Uma operação bem-sucedida retorna:
{"acknowledged":true,"shards_acknowledged":true,"index":"lindorm_search"}
acknowledged: Confirma que o cluster processou a solicitação.shards_acknowledged: Indica que todos os shards primários foram iniciados antes do tempo limite.index: Nome do índice criado.
Defina o mapeamento do índice
Defina os tipos de campo para o índice lindorm_search. O exemplo a seguir configura id como inteiro longo, name como palavra-chave e 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"}
}
}
}'
Uma operação bem-sucedida retorna:
{"_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>
Saída de exemplo:
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
Se não houver índices, apenas a linha de cabeçalho será retornada.
Exclua um índice
curl -XDELETE "http://ld-t4n5668xk31ui****-proxy-search-public.lindorm.rds.aliyuncs.com:30070/lindorm_search" \
-u <username>:<password>
Uma exclusão bem-sucedida retorna:
{"acknowledged":true}
Gerencie documentos
Indexar um único documento
Indexe um documento com ID 1 em 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 vários documentos
Use a API bulk para indexar vários documentos em uma única solicitação. Cada documento requer duas linhas: uma linha de ação e uma linha de source.
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"}
'
Prefira a API bulk ao indexar grandes volumes de dados, pois ela reduz a sobrecarga de rede em comparação com solicitações individuais.
Obter um documento por ID
Recupere o documento com ID 1:
curl -XGET "http://ld-t4n5668xk31ui****-proxy-search-public.lindorm.rds.aliyuncs.com:30070/lindorm_search/_doc/1?pretty" \
-u <username>:<password>
Saída de exemplo:
{
"_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: O valortrueindica que o documento existe._version: Incrementa sempre que o documento é atualizado._source: Dados originais do documento indexado.
Próximos passos
Para obter a lista completa de APIs REST suportadas, consulte a Referência da API REST do Elasticsearch.