Tous les produits
Search
Centre de documentation

PolarDB:PolarSearch quick start

Dernière mise à jour :Oct 13, 2026

PolarSearch est le service de recherche distribué de PolarDB, qui prend en charge la recherche en texte intégral et la recherche vectorielle. S'appuyant sur OpenSearch, il est compatible avec l'écosystème Elasticsearch et s'intègre étroitement aux bases de données PolarDB. PolarSearch offre une solution tout-en-un qui simplifie la récupération de vos données.

Important

Ce guide suppose que vous possédez des connaissances de base sur Elasticsearch ou OpenSearch. Pour plus d'informations, consultez la documentation OpenSearch.

Prérequis

Configuration requise pour le cluster

  • Édition du produit : Enterprise Edition.

  • Série : Cluster Edition.

  • Moteur de base de données : MySQL 8.0.1 ou MySQL 8.0.2.

    Remarque

    Il n'existe aucune exigence spécifique concernant les versions mineures pour les moteurs de base de données répertoriés ci-dessus. Pour plus d'informations, consultez la section Interroger le numéro de version.

  • Moteur de base de données :

    • (version mineure du noyau 2.0.18.3.2.0 ou ultérieure)

    • (version mineure du noyau 2.0.17.9.6.0 ou ultérieure)

    • (version mineure du noyau 2.0.16.11.15.0 ou ultérieure)

    • (version mineure du noyau 2.0.15.17.8.0 ou ultérieure)

    • (version mineure du noyau 2.0.14.22.43.0 ou ultérieure)

Régions et zones de disponibilité prises en charge

PolarSearch est pris en charge dans les zones de disponibilité suivantes :

Région

Zone de disponibilité

Chine (Hangzhou)

Zone B, Zone I, Zone J, Zone K

Chine (Shanghai)

Zone E, Zone F, Zone L, Zone N

Chine (Shenzhen)

Zone C, Zone D, Zone F

Chine (Pékin)

Zone F, Zone L, Zone I, Zone K

Chine (Zhangjiakou)

Zone A, Zone B, Zone C

Chine (Ulanqab)

Zone B, Zone C

Chine (Hong Kong)

Zone B, Zone C, Zone D

Singapour

Zone A, Zone B

Japon (Tokyo)

Zone B, Zone C

Corée du Sud (Séoul)

Zone A, Zone B

Allemagne (Francfort)

Zone A

États-Unis (Silicon Valley)

Zone B

États-Unis (Virginie)

Zone A, Zone B

Philippines (Manille)

Zone A

Remarque

Si vous avez besoin de la prise en charge de zones de disponibilité supplémentaires, soumettez un ticket.

Facturation

PolarSearch fournit des fonctionnalités de recherche en utilisant des nœuds de recherche dédiés, et des frais sont appliqués pour ces nœuds. Les nœuds de recherche sont facturés selon les règles de Facturation des nœuds de calcul standard. De plus, les index et les données présents dans les nœuds de recherche consomment de l'espace de stockage, lequel est également soumis aux frais de stockage et aux correspondantes.

Ajouter des nœuds de recherche PolarSearch

  • Vous pouvez ajouter des nœuds de recherche à un cluster existant qui satisfait aux Prérequis.

    1. Connectez-vous à la console PolarDB. Dans le volet de navigation de gauche, cliquez sur Clusters. Sélectionnez la région où le cluster est déployé, puis localisez le cluster cible.

    2. Cliquez sur l'ID du cluster pour ouvrir la page Basic Information.

    3. Dans la section Database Nodes, cliquez sur Add/Remove Node.

    4. Dans la boîte de dialogue Add/Remove Node, sélectionnez l'ajout de nœuds de recherche. Le nombre de nœuds de recherche doit être d'au moins 2.

Créer des comptes de nœud de recherche

Configurer le compte administrateur

Remarque
  • Le compte que vous ajoutez est un compte standard.

  • Ce compte standard sert de compte administrateur pour PolarSearch.

  1. Connectez-vous à la console PolarDB. Dans le volet de navigation de gauche, cliquez sur Clusters. Sélectionnez la région où le cluster est déployé, puis localisez le cluster cible.

  2. Cliquez sur l'ID du cluster pour ouvrir la page Basic Information.

  3. Dans la section Database Nodes, placez le curseur sur Search Node et cliquez sur Set Database Account.

  4. Dans la boîte de dialogue qui s'affiche, sélectionnez un compte standard existant ou créez-en un nouveau, puis saisissez le mot de passe du compte.

    Important

    Le nom du compte de base de données ne peut pas être une sous-chaîne de son mot de passe. La vérification n'est pas sensible à la casse. Par exemple, pour un compte de base de données nommé search_test, le mot de passe ne peut pas être SEARCH_test@123, mais il peut être SEARCHtest@123 ou SEARCH@_test.

Configurer des comptes standard

Les autorisations des comptes standard peuvent être configurées index par index. Vous pouvez les définir de deux manières : via le Dashboard ou l'API REST.

Configuration via le Dashboard

Remarque

Le compte doit disposer du rôle security_rest_api_access. Sinon, la page Security ne s'affiche pas.

  1. Créer un utilisateur :

    1. Dans le volet de navigation de gauche, accédez à la page , sélectionnez Internal users, puis cliquez sur Create internal user.

    2. Sur la page de création d'utilisateur, saisissez un nom d'utilisateur et un mot de passe pour créer l'utilisateur. Par exemple, créez un utilisateur nommé testuser avec le mot de passe USER@test123, puis cliquez sur Create.

  2. Créer un rôle

    1. Dans le volet de navigation de gauche, accédez à la page , sélectionnez Roles, puis cliquez sur Create role.

    2. Les autorisations de rôle incluent les autorisations de cluster et les autorisations d'index, que vous pouvez configurer en ajoutant des groupes d'actions. Dans le champ Index, spécifiez un nom d'index ou utilisez le caractère générique * pour faire correspondre un ensemble de noms d'index. Dans la section Index permissions, sélectionnez des autorisations spécifiques, telles que lecture seule ou lecture/écriture.

      Exemple : Créez un rôle nommé onlyreadrole disposant des autorisations complètes sur le cluster (unlimited équivaut aux autorisations complètes) et d'une autorisation en lecture seule pour tous les index préfixés par indextest.

      De plus, les autorisations d'index prennent en charge la configuration de la Document level security (qui restreint la portée des documents accessibles via des instructions de requête JSON) et de la Field level security (qui restreint les champs accessibles).

  3. Mapper un rôle à un utilisateur

    1. Dans le volet de navigation de gauche, accédez à la page Management > Security, sélectionnez Roles, puis cliquez sur le rôle cible.

    2. Dans l'onglet Mapped users, ajoutez un mappage d'utilisateur. Un utilisateur peut être mappé à plusieurs rôles et hérite des autorisations de tous les rôles mappés.

      Exemple : Mappez le rôle onlyreadrole à l'utilisateur testuser. Cela accorde à l'utilisateur testuser les autorisations du rôle onlyreadrole.

      Sur la page Map user du rôle onlyreadrole, ajoutez l'utilisateur testuser dans la zone Users, puis cliquez sur Map pour terminer le mappage.

Configuration via l'API REST

Les nœuds de recherche prennent en charge le contrôle d'accès complet via des API. Pour plus d'informations, consultez la documentation de l'API OpenSearch.

  1. Créer un utilisateur

    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": {}
      }'

    Exemple : Créez un utilisateur nommé testuser avec le mot de passe 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. Créer un rôle

    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 : Spécifie les index à configurer. Vous pouvez utiliser le caractère générique * pour configurer plusieurs index simultanément.

    • allowed_actions : Spécifie les autorisations à accorder, telles que read et write.

    Exemple : Créez un rôle nommé onlyreadrole disposant des autorisations complètes sur le cluster et d'une autorisation en lecture seule pour tous les index préfixés par 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. Mapper un rôle

    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>"]
      }'

    Exemple : Mappez le rôle onlyreadrole à l'utilisateur testuser. Cela accorde à l'utilisateur testuser les autorisations du rôle 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"]
      }'

Obtenir les endpoints de connexion

Endpoint de recherche

Dans la section Database Nodes, placez le curseur sur un Search Node pour obtenir l'endpoint privé ou public correspondant à votre environnement.

Endpoint du Dashboard

Dans la section Database Nodes, placez le curseur sur un Search Node pour obtenir l'endpoint Dashboard privé ou public correspondant à votre environnement.

Se connecter à PolarSearch

Connexion via l'endpoint de recherche

Si vous préférez gérer les index et les données via des API, vous pouvez vous connecter à PolarSearch par le biais de son endpoint de recherche. L'exemple suivant montre comment se connecter depuis une instance ECS.

  1. Configurer les listes d'autorisation pour un cluster : Ajoutez l'adresse IP de votre instance ECS à la liste d'autorisation du cluster PolarDB for MySQL.

    Remarque
    • Si votre instance ECS et le cluster PolarDB for MySQL se trouvent dans le même VPC, ajoutez l'adresse IP privée de l'instance ECS à la liste d'autorisation.

    • Si votre instance ECS et le cluster PolarDB for MySQL ne se trouvent pas dans le même VPC, ajoutez l'adresse IP publique de l'instance ECS à la liste d'autorisation.

  2. Connectez-vous à PolarSearch : Exécutez la commande suivante. Si la commande renvoie les informations du cluster, la connexion est réussie. Remplacez <endpoint>:<port> par l'endpoint de recherche de PolarSearch et <user_name>:<passwd> par le compte administrateur de PolarSearch.

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

Connexion via le Dashboard

Si vous préférez gérer PolarSearch via une interface graphique, vous pouvez y accéder par le biais du Dashboard. L'exemple suivant utilise un navigateur dans un environnement local :

  1. Configurer les listes d'autorisation pour un cluster : Ajoutez l'adresse IP publique de votre machine locale à la liste d'autorisation du cluster PolarDB for MySQL.

  2. Connectez-vous à la console PolarSearch dans un navigateur :

    1. Dans la barre d'adresse de votre navigateur, saisissez http://<endpoint>:<port> et appuyez sur Entrée. Remplacez <endpoint>:<port> par l'endpoint public du Dashboard pour PolarSearch.

    2. Sur la page de connexion, saisissez les identifiants du compte administrateur pour PolarSearch afin d'accéder à la console PolarSearch compatible avec Kibana.

Exemples

Remarque
  • Tous les exemples de cette section sont exécutés depuis la ligne de commande sur une instance ECS.

  • PolarSearch est entièrement compatible avec le SDK et l'API REST d'OpenSearch 2.19.0. L'utilisation d'autres versions peut entraîner des problèmes de compatibilité. Pour plus d'informations, consultez la documentation OpenSearch.

Créer un index

Un index dans un nœud de recherche est analogue à une table dans une base de données relationnelle. Vous pouvez créer un index en utilisant une API REST compatible avec Elasticsearch ou en exécutant des commandes directement dans le Dashboard. Voici quelques exemples :

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"
      }
    }
  }
}

Importer des données

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"}

Exécuter une requête de recherche

Une fois les données importées, vous pouvez effectuer une recherche en texte intégral à l'aide d'un SDK, de l'API REST ou du Dashboard. Les exemples suivants illustrent la procédure :

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"
    }
  }
}
Remarque

Pour plus d'informations sur la syntaxe des requêtes de recherche, consultez la documentation OpenSearch.

Créer un index vectoriel

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"
      }
    }
  }
}

Insérer des données vectorielles

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"}

Recherche vectorielle

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
      }
    }
  }
}