Todos os produtos
Search
Central de documentação

PolarDB:Início rápido do PolarSearch

Última atualização: Oct 13, 2026

O PolarSearch é o serviço de busca distribuída do PolarDB, com suporte a busca de texto completo e busca vetorial. Construído sobre o OpenSearch, ele é compatível com o ecossistema Elasticsearch e integra-se diretamente aos bancos de dados PolarDB. O PolarSearch oferece uma solução completa que simplifica a recuperação dos seus dados.

Importante

Este guia pressupõe que você tenha conhecimento básico de Elasticsearch ou OpenSearch. Para mais informações, consulte a Documentação do OpenSearch.

Pré-requisitos

Requisitos de configuração do cluster

  • Edição do produto: Enterprise Edition.

  • Série: Cluster Edition.

  • Mecanismo de banco de dados: MySQL 8.0.1 ou MySQL 8.0.2.

    Nota

    Não há requisitos específicos de versão secundária para os mecanismos de banco de dados listados acima. Para mais informações, consulte {{XREF_0}}.

  • Mecanismo de banco de dados:

    • (versão secundária do kernel 2.0.18.3.2.0 ou posterior)

    • (versão secundária do kernel 2.0.17.9.6.0 ou posterior)

    • (versão secundária do kernel 2.0.16.11.15.0 ou posterior)

    • (versão secundária do kernel 2.0.15.17.8.0 ou posterior)

    • (versão secundária do kernel 2.0.14.22.43.0 ou posterior)

Regiões e zonas de disponibilidade suportadas

O PolarSearch é suportado nas seguintes zonas de disponibilidade:

Região

Zona de disponibilidade

China (Hangzhou)

Zone B, Zone I, Zone J, Zone K

China (Shanghai)

Zone E, Zone F, Zone L, Zone N

China (Shenzhen)

Zone C, Zone D, Zone F

China (Beijing)

Zone F, Zone L, Zone I, Zone K

China (Zhangjiakou)

Zone A, Zone B, Zone C

China (Ulanqab)

Zone B, Zone C

China (Hong Kong)

Zone B, Zone C, Zone D

Singapore

Zone A, Zone B

Japan (Tokyo)

Zone B, Zone C

South Korea (Seoul)

Zone A, Zone B

Germany (Frankfurt)

Zone A

US (Silicon Valley)

Zone B

US (Virginia)

Zone A, Zone B

Philippines (Manila)

Zone A

Nota

Caso necessite de suporte para zonas de disponibilidade adicionais, envie um ticket.

Faturamento

O PolarSearch fornece funcionalidade de busca por meio de nós de busca dedicados, e são cobradas taxas referentes a esses nós. Os nós de busca são faturados com base em {{XREF_1}}{{XREF_2}}. Além disso, os índices e dados nos nós de busca consomem espaço de armazenamento, sujeito também às respectivas {{XREF_3}} e {{XREF_4}}.

Adicionar nós de busca do PolarSearch

  • Adicione nós de busca a um cluster existente que atenda aos {{XREF_5}}.

    1. Faça login no console do PolarDB, no painel de navegação à esquerda, clique em Clusters. Selecione a Region onde o cluster está implantado e localize o cluster desejado.

    2. Clique no ID do cluster para abrir a página Basic Information.

    3. Na seção Database Nodes, clique em Add/Remove Node.

    4. Na caixa de diálogo Add/Remove Node

      , selecione a opção para adicionar nós de busca. A quantidade de nós de busca deve ser de pelo menos 2.

Criar contas de nó de busca

Configurar a conta de administrador

Nota
  • A conta adicionada é uma conta padrão.

  • Essa conta padrão funciona como a conta de administrador do PolarSearch.

  1. Faça login no console do PolarDB, no painel de navegação à esquerda, clique em Clusters. Selecione a Region onde o cluster está implantado e localize o cluster desejado.

  2. Clique no ID do cluster para abrir a página Basic Information.

  3. Na seção Database Nodes, passe o mouse sobre Search Node e clique em Set Database Account.

  4. Na caixa de diálogo exibida, selecione uma conta padrão existente ou crie uma nova e insira a senha da conta.

    Importante

    O nome da conta de banco de dados não pode ser uma substring da sua senha. A verificação não diferencia maiúsculas de minúsculas. Por exemplo, para uma conta de banco de dados chamada search_test, a senha não pode ser SEARCH_test@123, mas pode ser SEARCHtest@123 ou SEARCH@_test.

Configurar contas padrão

As permissões das contas padrão podem ser configuradas individualmente por índice. É possível defini-las de duas maneiras: pelo Dashboard ou pela REST API.

Configuração via Dashboard

Nota

A conta deve possuir a função security_rest_api_access. Caso contrário, a página Security não será exibida.

  1. Criar um usuário:

    1. No painel de navegação à esquerda, acesse a página , selecione Internal users e clique em Create internal user.

    2. Na página de criação de usuário, insira um nome de usuário e uma senha para criar o usuário. Por exemplo, crie um usuário chamado testuser com a senha USER@test123 e clique em Create.

  2. Criar uma função

    1. No painel de navegação à esquerda, acesse a página , selecione Roles e clique em Create role.

    2. As permissões da função incluem permissões de cluster e permissões de índice, configuráveis mediante a adição de grupos de ações. No campo Index, especifique um nome de índice ou utilize o curinga * para corresponder a um conjunto de nomes de índice. Na seção Index permissions, selecione as permissões específicas, como somente leitura ou leitura/gravação.

      Exemplo: Crie uma função chamada onlyreadrole que tenha permissões totais de cluster (ilimitado equivale a permissões totais) e permissão de somente leitura para todos os índices com o prefixo indextest.

      Além disso, as permissões de índice suportam a configuração de Document level security (que restringe o escopo de documentos acessíveis por meio de instruções de consulta JSON) e Field level security (que restringe os campos acessíveis).

  3. Mapear uma função para um usuário

    1. No painel de navegação à esquerda, acesse a página Management > Security, selecione Roles e clique na função desejada.

    2. Na aba Mapped users, adicione um mapeamento de usuário. Um usuário pode ser mapeado para várias funções e herda as permissões de todas as funções mapeadas.

      Exemplo: Mapeie a função onlyreadrole para o usuário testuser. Isso concede ao usuário testuser as permissões da função onlyreadrole.

      Na página Map user da função onlyreadrole, adicione o usuário testuser na área Users e clique em Map para concluir o mapeamento.

Configuração via REST API

Os nós de busca suportam controle de acesso total por meio de APIs. Para mais informações, consulte a documentação da API do OpenSearch.

  1. Criar um usuário

    curl -X PUT "http://<endpoint>:<port>/_plugins/_security/api/internalusers/<new_user>" \
      --user "<user_name>:<passwd>" \
      -H "Content-Type: application/json" \
      -d '{
        "password": "<new_password>",
        "backend_roles": [],
        "attributes": {}
      }'

    Exemplo: Crie um usuário chamado testuser com a senha USER@test123.

    curl -X PUT "http://<endpoint>:<port>/_plugins/_security/api/internalusers/testuser" \
      --user "<user_name>:<passwd>" \
      -H "Content-Type: application/json" \
      -d '{
        "password": "USER@test123",
        "backend_roles": [],
        "attributes": {}
      }'
  2. Criar uma função

    curl -X PUT "http://<endpoint>:<port>/_plugins/_security/api/roles/<role_name>" \
      --user "<user_name>:<passwd>" \
      -H "Content-Type: application/json" \
      -d '{
        "cluster_permissions": ["*"],
        "index_permissions": [
          {
            "index_patterns": ["*"],
            "allowed_actions": ["*"]
          }
        ]
      }'
    • index_patterns: Especifica os índices a serem configurados. Utilize o curinga * para configurar vários índices simultaneamente.

    • allowed_actions: Define as permissões a serem concedidas, como read e write.

    Exemplo: Crie uma função chamada onlyreadrole com permissões totais de cluster e permissão de somente leitura para todos os índices com o prefixo indextest.

    curl -X PUT "http://<endpoint>:<port>/_plugins/_security/api/roles/onlyreadrole" \
      --user "<user_name>:<passwd>" \
      -H "Content-Type: application/json" \
      -d '{
        "cluster_permissions": ["*"],
        "index_permissions": [
          {
            "index_patterns": ["indextest*"],
            "allowed_actions": ["read"]
          }
        ]
      }'
  3. Mapear uma função

    curl -X PUT "http://<endpoint>:<port>/_plugins/_security/api/rolesmapping/<role_name>" \
      --user "<user_name>:<passwd>" \
      -H "Content-Type: application/json" \
      -d '{
        "backend_roles": [],
        "hosts": [],
        "users": ["<new_user>"]
      }'

    Exemplo: Mapeie a função onlyreadrole para o usuário testuser. Isso concede ao usuário testuser as permissões da função onlyreadrole.

    curl -X PUT "http://<endpoint>:<port>/_plugins/_security/api/rolesmapping/onlyreadrole" \
      --user "<user_name>:<passwd>" \
      -H "Content-Type: application/json" \
      -d '{
        "backend_roles": [],
        "hosts": [],
        "users": ["testuser"]
      }'

Obter endpoints de conexão

Endpoint de busca

Na seção Database Nodes, passe o mouse sobre um Search Node para obter o endpoint privado ou público correspondente ao seu ambiente.

Endpoint do Dashboard

Na seção Database Nodes, passe o mouse sobre um Search Node para obter o endpoint privado ou público do Dashboard correspondente ao seu ambiente.

Conectar-se ao PolarSearch

Conectar via endpoint de busca

Se preferir gerenciar índices e dados usando APIs, conecte-se ao PolarSearch através do seu endpoint de busca. O exemplo a seguir demonstra como se conectar a partir de uma instância ECS.

  1. {{XREF_9}}{{XREF_10}}: Adicione o endereço IP da sua instância ECS à lista de permissões do cluster PolarDB for MySQL.

    Nota
    • Se a sua instância ECS e o cluster PolarDB for MySQL estiverem na mesma VPC, adicione o endereço IP privado da instância ECS à lista de permissões.

    • Se a sua instância ECS e o cluster PolarDB for MySQL não estiverem na mesma VPC, adicione o endereço IP público da instância ECS à lista de permissões.

  2. Conecte-se ao PolarSearch: Execute o comando abaixo. Se o comando retornar informações do cluster, a conexão foi bem-sucedida. Substitua &lt;endpoint&gt;:&lt;port&gt; pelo {{XREF_11}} do PolarSearch e &lt;user_name&gt;:&lt;passwd&gt; pelas {{XREF_12}} do PolarSearch.

    curl http://<endpoint>:<port>/ -u <user_name>:<passwd>

Conectar via Dashboard

Se preferir gerenciar o PolarSearch usando uma interface gráfica, acesse-o através do Dashboard. O exemplo a seguir utiliza um navegador em um ambiente local:

  1. {{XREF_13}}{{XREF_14}}: Adicione o endereço IP público da sua máquina local à lista de permissões do cluster PolarDB for MySQL.

  2. Faça login no console do PolarSearch em um navegador:

    1. Na barra de endereços do seu navegador, insira http://&lt;endpoint&gt;:&lt;port&gt; e pressione Enter. Substitua &lt;endpoint&gt;:&lt;port&gt; pelo {{XREF_15}} do PolarSearch.

    2. Na página de login, insira as credenciais {{XREF_16}} do PolarSearch para acessar o console do PolarSearch compatível com Kibana.

Exemplos

Nota
  • Todos os exemplos nesta seção são executados a partir da linha de comando em uma instância ECS.

  • O PolarSearch é totalmente compatível com o SDK do OpenSearch 2.19.0 e a REST API. O uso de outras versões pode causar problemas de compatibilidade. Para mais informações, consulte OpenSearch.

Criar um índice

Um índice em um nó de busca é análogo a uma tabela em um banco de dados relacional. Crie um índice usando uma REST API compatível com Elasticsearch ou executando comandos diretamente no Dashboard. Veja os exemplos a seguir:

CLI

curl -XPUT "http://<endpoint>:<port>/articles" \
--user "<user_name>:<passwd>" \
-H 'Content-Type: application/json' \
-d '{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "text"
      },
      "content": {
        "type": "text"
      },
      "author": {
        "type": "keyword"
      }
    }
  }
}'

Dashboard

PUT articles
{
  "settings": {
    "number_of_shards": 1,
    "number_of_replicas": 1
  },
  "mappings": {
    "properties": {
      "title": {
        "type": "text"
      },
      "content": {
        "type": "text"
      },
      "author": {
        "type": "keyword"
      }
    }
  }
}

Importar dados

CLI

curl -XPOST "http://<endpoint>:<port>/articles/_bulk" \
--user "<user_name>:<passwd>" \
-H 'Content-Type: application/json' \
-d '
{"index": {}}
{"title": "Introduction to PolarSearch", "content": "PolarSearch is a powerful search engine.", "author": "Allen"}
{"index": {}}
{"title": "Advanced Search Techniques", "content": "Learn how to use full-text search and filters in PolarDB.", "author": "Lang"}
{"index": {}}
{"title": "Elasticsearch vs PolarSearch", "content": "A comparison of Elasticsearch and PolarSearch features.", "author": "Zhao"}
'

Dashboard

POST articles/_bulk
{"index": {}}
{"title": "Introduction to PolarSearch", "content": "PolarSearch is a powerful search engine.", "author": "Allen"}
{"index": {}}
{"title": "Advanced Search Techniques", "content": "Learn how to use full-text search and filters in PolarDB.", "author": "Lang"}
{"index": {}}
{"title": "Elasticsearch vs PolarSearch", "content": "A comparison of Elasticsearch and PolarSearch features.", "author": "Zhao"}

Executar uma consulta de busca

Após importar os dados, realize uma busca de texto completo utilizando um SDK, a REST API ou o Dashboard. Os exemplos a seguir demonstram como proceder:

CLI

curl -XGET "http://<endpoint>:<port>/articles/_search" \
--user "<user_name>:<passwd>" \
-H 'Content-Type: application/json' \
-d '
{
  "query": {
    "match": {
      "content": "PolarSearch"
    }
  }
}'

Dashboard

GET articles/_search
{
  "query": {
    "match": {
      "content": "PolarSearch"
    }
  }
}
Nota

Para mais informações sobre a sintaxe de consultas de busca, consulte a documentação do OpenSearch.

Criar um índice vetorial

CLI

curl -XPUT "http://<endpoint>:<port>/my-vector-index" \
--user "<user_name>:<passwd>" \
-H "Content-Type:application/json" \
-d '
{
  "settings": {
    "index": {
      "knn": true
    }
  },
  "mappings": {
    "properties": {
      "vector_field": {
        "type": "knn_vector",
        "dimension": 4
      },
      "metadata": {
        "type": "text"
      }
    }
  }
}
'

Dashboard

PUT my-vector-index
{
  "settings": {
    "index": {
      "knn": true
    }
  },
  "mappings": {
    "properties": {
      "vector_field": {
        "type": "knn_vector",
        "dimension": 4
      },
      "metadata": {
        "type": "text"
      }
    }
  }
}

Inserir dados vetoriais

CLI

curl -XPOST "http://<endpoint>:<port>/my-vector-index/_bulk" \
--user "<user_name>:<passwd>" \
-H "Content-Type:application/json" \
-d '
{"index": {}}
{"vector_field": [0.1, 0.5, -0.3, 0.8], "metadata": "Document 1"}
{"index": {}}
{"vector_field": [-0.2, 0.7, 0.4, -0.1], "metadata": "Document 2"}
'

Dashboard

POST my-vector-index/_bulk
{"index": {}}
{"vector_field": [0.1, 0.5, -0.3, 0.8], "metadata": "Document 1"}
{"index": {}}
{"vector_field": [-0.2, 0.7, 0.4, -0.1], "metadata": "Document 2"}

Busca vetorial

CLI

curl -XGET "http://<endpoint>:<port>/my-vector-index/_search" \
--user "<user_name>:<passwd>" \
-H "Content-Type:application/json" \
-d '
{
  "size": 2,
  "query": {
    "knn": {
      "vector_field": {
        "vector": [0.1, 0.5, -0.3, 0.8],
        "k": 2
      }
    }
  }
}
'

Dashboard

GET my-vector-index/_search
{
  "size": 2,
  "query": {
    "knn": {
      "vector_field": {
        "vector": [0.1, 0.5, -0.3, 0.8],
        "k": 2
      }
    }
  }
}