すべてのプロダクト
Search
ドキュメントセンター

PolarDB:PolarSearch クイックスタート

最終更新日:Jul 09, 2026

PolarSearch は、PolarDB の分散検索サービスで、全文検索とベクトル検索の両方をサポートしています。OpenSearch をベースに構築されており、Elasticsearch エコシステムと互換性があり、PolarDB データベースと緊密に統合されています。PolarSearch は、データ検索を簡素化するワンストップソリューションを提供します。

重要

このガイドは、Elasticsearch または OpenSearch の基本的な知識があることを前提としています。詳細については、「OpenSearch ドキュメント」をご参照ください。

前提条件

クラスター構成の要件

  • 製品エディション:Enterprise Edition。

  • シリーズ:Cluster Edition。

  • データベースエンジン:MySQL 8.0.1 または MySQL 8.0.2。

    説明

    上記のデータベースエンジンには、特定のマイナーバージョン要件はありません。詳細については、「バージョン番号のクエリ」をご参照ください。

サポート対象のリージョンとアベイラビリティーゾーン

PolarSearch は、以下のアベイラビリティーゾーンで利用できます:

リージョン

アベイラビリティーゾーン

中国 (杭州)

ゾーン K、ゾーン J

中国 (上海)

ゾーン E、ゾーン F、ゾーン L、ゾーン N

中国 (深圳)

ゾーン C、ゾーン D、ゾーン F

中国 (北京)

ゾーン F、ゾーン L、ゾーン I、ゾーン K

中国 (張家口)

ゾーン B

中国 (ウランチャブ)

ゾーン B、ゾーン C

中国 (香港)

ゾーン B、ゾーン D

シンガポール

ゾーン A、ゾーン B

日本 (東京)

ゾーン A、ゾーン C

韓国 (ソウル)

ゾーン A、ゾーン B

ドイツ (フランクフルト)

ゾーン A

米国 (シリコンバレー)

ゾーン B

フィリピン (マニラ)

ゾーン A

説明

追加のアベイラビリティーゾーンのサポートが必要な場合は、チケットを送信してください。

課金

PolarSearch は、専用の検索ノードを使用して検索機能を提供し、これらのノードに対して料金が発生します。検索ノードは、通常のコンピューティングノードの課金に基づいて課金されます。さらに、検索ノード内のインデックスとデータはストレージ領域を消費するため、対応するストレージ料金とも適用されます。

PolarSearch 検索ノードの追加

  • 前提条件を満たす既存のクラスターに検索ノードを追加できます。

    1. PolarDB コンソールにログインします。 左側のナビゲーションペインで、クラスター をクリックします。 次に、クラスターの リージョン を選択し、ターゲットクラスターを見つけます。

    2. クラスター ID をクリックすると、基本情報 ページが開きます。

    3. データベースノード セクションで、ノードの追加/削除 をクリックします。

      image

    4. ノードの追加/削除 ウィザードで、検索ノードの追加を選択します。

検索ノードアカウントの作成

管理者アカウントの設定

説明
  • 追加するアカウントは標準アカウントです。

  • この標準アカウントは、PolarSearch の管理者アカウントとして機能します。

  1. [PolarDB コンソール] にログインします。左側のナビゲーションペインで クラスター をクリックします。次に、クラスターの [リージョン] を選択し、目的のクラスターを見つけます。

  2. クラスター ID をクリックすると、基本情報 ページが開きます。

  3. データベースノード セクションで、検索ノード にカーソルを合わせ、データベースに接続するためのアカウントの設定 をクリックします。

    image

  4. 表示されるダイアログボックスで、既存の標準アカウントを選択するか、新しいアカウントを作成し、アカウントのパスワードを入力します。

    image

    重要

    データベースアカウント名は、そのパスワードの部分文字列にすることはできません。チェックでは大文字と小文字は区別されません。たとえば、search_test という名前のデータベースアカウントの場合、パスワードを SEARCH_test@123 にすることはできませんが、SEARCHtest@123 または SEARCH@_test にすることはできます。

標準アカウントの設定

標準アカウントの権限は、インデックスごとに設定できます。ダッシュボードまたは REST API を使用して、2 つの方法で設定できます。

ダッシュボードでの設定

説明

アカウントには security_rest_api_access ロールが必要です。そうでない場合、セキュリティページは表示されません。

  1. ユーザーの作成

    1. 左側のナビゲーションペインで、[管理] > [セキュリティ] ページに移動し、[内部ユーザー] を選択して、[内部ユーザーの作成] をクリックします。image

    2. ユーザー作成ページで、ユーザー名とパスワードを入力してユーザーを作成します。 たとえば、ユーザー名 testuser、パスワード USER@test123 でユーザーを作成し、[作成] をクリックします。image

  2. ロールの作成

    1. 左側のナビゲーションペインで、[管理] > [セキュリティ] ページに移動し、[ロール] を選択し、[ロールの作成] をクリックします。image

    2. ロール権限にはクラスター権限とインデックス権限が含まれ、アクショングループを追加して設定できます。[インデックス] フィールドで、インデックス名を指定するか、* ワイルドカードを使用して一連のインデックス名に一致させます。[インデックス権限] セクションで、読み取り専用や読み取り/書き込みなどの特定の権限を選択します。

      例:onlyreadrole という名前のロールを作成します。このロールには、クラスターの完全な権限 (unlimited は完全な権限と同等) と、indextest で始まるすべてのインデックスに対する読み取り専用権限が付与されます。image.png

  3. ロールをユーザーにマッピング

    1. 左側のナビゲーションペインで、[管理] > [セキュリティ] ページに移動し、[ロール] を選択して、対象のロールをクリックします。

    2. [マッピングされたユーザー] タブで、ユーザーマッピングを追加します。ユーザーは複数のロールにマッピングでき、マッピングされたすべてのロールの権限を継承します。

      例: onlyreadrole ロールを testuser ユーザーに割り当てます。これにより、testuser ユーザーには onlyreadrole ロールの権限が付与されます。image.png

REST API での設定

検索ノードは、API による完全なアクセス制御をサポートしています。詳細については、「OpenSearch API ドキュメント」をご参照ください。

  1. ユーザーの作成

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

    例:ユーザー名が testuser、パスワードが 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. ロールの作成

    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 は、設定するインデックスを指定します。* ワイルドカードを使用して、一度に複数のインデックスを設定できます。

    • allowed_actionsreadwrite など、付与する権限を指定します。

    例: onlyreadrole という名前でロールを作成し、クラスターの完全な権限と、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. ロールのマッピング

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

    例: onlyreadrole ロールを testuser ユーザーにマッピングします。 これにより、testuser ユーザーには 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"]
      }'

接続エンドポイントの取得

検索エンドポイント

データベースノード セクションで、検索ノード にカーソルを合わせると、ご使用の環境に対応するプライベートエンドポイントまたはパブリックエンドポイントを取得できます。

image

ダッシュボードエンドポイント

データベースノード セクションで、検索ノード にカーソルを合わせると、お使いの環境に対応するプライベートまたはパブリックのダッシュボードエンドポイントを取得できます。image

PolarSearch への接続

検索エンドポイント経由での接続

API を使用してインデックスとデータを管理する場合は、検索エンドポイント経由で PolarSearch に接続できます。次の例は、ECS インスタンスから接続する方法を示しています。

  1. クラスターホワイトリストの設定:ECS インスタンスの IP アドレスを PolarDB クラスターホワイトリストに追加します。

    説明
    • ECS インスタンスと PolarDB クラスターが同じ仮想プライベートクラウド (VPC) にある場合は、ECS インスタンスのプライベート IP アドレスをホワイトリストに追加します。

    • ECS インスタンスと PolarDB クラスターが同じ VPC にない場合は、ECS インスタンスのパブリック IP アドレスをホワイトリストに追加します。

  2. PolarSearch への接続:次のコマンドを実行します。コマンドがクラスター情報を返す場合、接続は成功です。<endpoint>:<port> を PolarSearch 検索エンドポイントに、<user_name>:<passwd> を PolarSearch 管理者アカウントに置き換えます。

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

ダッシュボード経由での接続

GUI を使用して PolarSearch を管理する場合は、ダッシュボード経でアクセスできます。次の例では、ローカル環境のブラウザを使用します:

  1. クラスターホワイトリストの設定:ローカルマシンのパブリック IP アドレスを PolarDB クラスターホワイトリストに追加します。

  2. ブラウザで PolarSearch コンソールにログインします:

    1. ブラウザのアドレスバーに http://<endpoint>:<port> を入力し、Enter キーを押します。<endpoint>:<port> を PolarSearch の パブリックダッシュボードエンドポイント に置き換えます。

    2. ログインページで、PolarSearch の管理者アカウントの認証情報を入力して、Kibana 互換の PolarSearch コンソールにアクセスします。

説明
  • このセクションのすべての例は、ECS インスタンスのコマンドラインから実行されます。

  • PolarSearch は、OpenSearch 2.19.0 SDK および REST API と完全に互換性があります。他のバージョンを使用すると、互換性の問題が発生する可能性があります。詳細については、「OpenSearch」をご参照ください。

インデックスの作成

検索ノードのインデックスは、リレーショナルデータベースのテーブルに似ています。Elasticsearch 互換の REST API を使用するか、ダッシュボードでコマンドを直接実行することで、インデックスを作成できます。以下に例を示します:

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

ダッシュボード

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

データのインポート

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": "田中"}
{"index": {}}
{"title": "Advanced Search Techniques", "content": "Learn how to use full-text search and filters in PolarDB.", "author": "鈴木"}
{"index": {}}
{"title": "Elasticsearch vs PolarSearch", "content": "A comparison of Elasticsearch and PolarSearch features.", "author": "佐藤"}
'

ダッシュボード

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

検索クエリの実行

データがインポートされた後、SDK、REST API、またはダッシュボードを使用して全文検索を実行できます。次の例は、その方法を示しています:

CLI

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

ダッシュボード

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

検索クエリ構文の詳細については、「OpenSearch ドキュメント」をご参照ください。

ベクトルインデックスの作成

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

ダッシュボード

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

ベクトルデータの挿入

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

ダッシュボード

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

ベクトル検索

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

ダッシュボード

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