Elasticsearch

Elasticsearch コネクタによって、Elasticsearch 検索エンジンに接続して、サポートされている検索エンジン オペレーションを実行できます。

始める前に

Elasticsearch コネクタを使用する前に、次の作業を行います。

  • Google Cloud プロジェクトで次の操作を行います。
    • コネクタを構成するユーザーに roles/connectors.admin IAM ロールを付与します。
    • コネクタに使用するサービス アカウントに、次の IAM ロールを付与します。
      • roles/secretmanager.viewer
      • roles/secretmanager.secretAccessor

      サービス アカウントは特別なタイプの Google アカウントで、Google API のデータにアクセスするのに認証を受ける必要がある人間以外のユーザーを表します。サービス アカウントがない場合は、サービス アカウントを作成する必要があります。詳細については、サービス アカウントを作成するをご覧ください。

    • 次のサービスを有効にします。
      • secretmanager.googleapis.com(Secret Manager API)
      • connectors.googleapis.com(Connectors API)

      サービスを有効にする方法については、サービスを有効にするをご覧ください。

    以前にプロジェクトでこうしたサービスを有効にしていない場合は、コネクタを構成するときにそれを有効にすることを求められます。

  • Linux に Elasticsearch をインストールする方法については、Elasticsearch をインストールするをご覧ください。
  • Elasticsearch を保護するために SSL を構成する方法については、SSL を構成するをご覧ください。

コネクタを構成する

コネクタを構成するには、データソース(バックエンド システム)への接続を作成する必要があります。接続はデータソースに特有です。つまり、多数のデータソースがある場合は、データソースごとに別々の接続を作成する必要があります。接続を作成する手順は次のとおりです。

  1. Cloud コンソールで、[Integration Connectors] > [接続] ページに移動し、Google Cloud プロジェクトを選択または作成します。

    [接続] ページに移動

  2. [+ 新規作成] をクリックして [接続の作成] ページを開きます。
  3. [ロケーション] セクションで、接続のロケーションを選択します。
    1. リージョン: プルダウン リストからロケーションを選択します

      サポートされているすべてのリージョンの一覧については、ロケーションをご覧ください。

    2. [NEXT] をクリックします。
  4. [接続の詳細] セクションで、次の操作を行います。
    1. コネクタ: 使用可能なコネクタのプルダウン リストから [Elasticsearch] を選択します。
    2. コネクタのバージョン: 使用可能なバージョンのプルダウン リストからコネクタのバージョンを選択します。
    3. [接続名] フィールドに、接続インスタンスの名前を入力します。

      接続名は次の条件を満たす必要があります。

      • 接続名には英字、数字、ハイフンを使用できます。
      • 文字は小文字のみを使用できます。
      • 接続名の先頭には英字を設定し、末尾には英字または数字を設定する必要があります。
      • 接続名は 49 文字以内で指定してください。
    4. 必要に応じて、接続インスタンスの [説明] を入力します。
    5. 必要に応じて、Cloud Logging を有効にして、ログレベルを選択します。デフォルトのログレベルは Error に設定されています。
    6. サービス アカウント: 必要なロールを持つサービス アカウントを選択します。
    7. 必要に応じて、接続ノードの設定を構成します。

      • ノードの最小数: 接続ノードの最小数を入力します。
      • ノードの最大数: 接続ノードの最大数を入力します。

      ノードは、トランザクションを処理する接続の単位(またはレプリカ)です。1 つの接続でより多くのトランザクションを処理するには、より多くのノードが必要になります。逆に、より少ないトランザクションを処理するには、より少ないノードが必要になります。ノードがコネクタの料金に与える影響については、接続ノードの料金をご覧ください。値を入力しない場合は、デフォルトで最小ノード数は 2 に設定され(可用性を高めるため)、最大ノード数は 50 に設定されます。

    8. クライアントサイドの評価: ネストされたオブジェクトに対して評価のクライアントサイドを実行するには、ClientSideEvaluation を true に設定します。
    9. Data Model: Elasticsearch ドキュメントの解析とデータベース メタデータの生成時に使用するデータモデルを指定します。
    10. Max Results: デフォルトの Search API の使用時に Elasticsearch から返される最大結果数。
    11. Use proxy: このチェックボックスを選択して、接続用のプロキシ サーバーを構成し、次の値を構成します。
      • Proxy Auth Scheme: プロキシ サーバーで認証する認証タイプを選択します。次の認証タイプがサポートされています。
        • 基本: 基本的な HTTP 認証。
        • ダイジェスト: ダイジェスト HTTP 認証。
      • Proxy User: プロキシ サーバーでの認証に使用されるユーザー名。
      • プロキシ パスワード: ユーザーのパスワードの Secret Manager シークレット。
      • Proxy SSL Type: プロキシ サーバーへの接続時に使用する SSL タイプ。次の認証タイプがサポートされています。
        • 自動: デフォルトの設定。URL が HTTPS URL の場合は、[トンネル] オプションが使用されます。URL が HTTP URL の場合、[なし] オプションが使用されます。
        • 常に: 接続は常に SSL 対応です。
        • なし: 接続は SSL に対応していません。
        • トンネル: 接続はトンネリング プロキシ経由で行われます。プロキシ サーバーがリモートホストへの接続を開き、トラフィックはプロキシを経由するようになります。
      • [Proxy Server] セクションで、プロキシ サーバーの詳細を入力します。
        1. [+ 宛先を追加] をクリックします。
        2. [宛先の種類] を選択します。
          • Host address: 宛先のホスト名または IP アドレスを指定します。

            バックエンドへのプライベート接続を確立する場合は、次のようにします。

    12. 必要に応じて、[+ ラベルを追加] をクリックして Key-Value ペアの形式でラベルを接続に追加します。
    13. [NEXT] をクリックします。
  5. [宛先] セクションに、接続するリモートホスト(バックエンド システム)の詳細を入力します。
    1. 宛先の種類: 宛先の種類を選択します。
      • リストから [ホストアドレス] を選択して、宛先のホスト名または IP アドレスを指定します。
      • バックエンド システムへのプライベート接続を確立する場合は、リストからエンドポイント アタッチメントを選択し、次にエンドポイント アタッチメントリストから必要なエンドポイント アタッチメントを選択します。

      セキュリティをさらに強化してバックエンドシステムへのパブリック接続を確立する場合は、接続用の静的アウトバウンド IP アドレスの構成を検討してから、特定の静的 IP アドレスのみを許可リストに登録するようファイアウォール ルールを構成します。

      他の宛先を入力するには、[+ 宛先を追加] をクリックします。

    2. [NEXT] をクリックします。
  6. [認証] セクションで、認証の詳細を入力します。
    1. [認証タイプ] を選択し、関連する詳細を入力します。

      Elasticsearch 接続でサポートされる認証タイプは次のとおりです。

      • Anonymous
      • ユーザー名とパスワードを指定する
    2. これらの認証タイプを構成する方法については、認証を構成するをご覧ください。

    3. [NEXT] をクリックします。
  7. Review: 接続と認証の詳細を確認します。
  8. [作成] をクリックします。

認証を構成する

使用する認証に基づいて詳細を入力します。

  • Anonymous

    匿名ログインを使用する場合は、[Not Available] を選択します。

  • ユーザー名とパスワード
    • ユーザー名: コネクタのユーザー名
    • パスワード: コネクタに関連付けられたパスワードを含む Secret Manager の Secret。

接続構成のサンプル

このセクションでは、Elasticsearch 接続の作成時に構成するさまざまなフィールドのサンプル値を示します。

SSL 接続タイプ

フィールド名 詳細
ロケーション us-central1
コネクタ Elasticsearch
コネクタのバージョン 1
接続名 elastic-search-service-conn
Cloud Logging を有効にする はい
サービス アカウント SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
データモデル リレーショナル
ノードの最小数 2
ノードの最大数 50
SSL を有効にする はい
トラストストアの安全でない接続 はい
キーストア はい
クライアント証明書 CLIENT_CERTIFICATE
シークレットのバージョン 1
クライアントの秘密鍵 CLIENT_PRIVATE_KEY
シークレットのバージョン 1
宛先タイプ(サーバー) ホストアドレス
ホストアドレス https://192.0.2.0
ポート 9,200
認証 はい
ユーザー パスワード はい
ユーザー名 USERNAME
パスワード パスワード
シークレットのバージョン 4

PSC 接続タイプ

フィールド名 詳細
ロケーション us-central1
コネクタ Elasticsearch
コネクタのバージョン 1
接続名 elasticsearch-psc-conn
Cloud Logging を有効にする はい
サービス アカウント SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com
データモデル リレーショナル
ノードの最小数 2
ノードの最大数 50
宛先タイプ(サーバー) ホストアドレス
ホストアドレス 192.0.2.0
ポート ポート
認証 はい
ユーザー パスワード はい
ユーザー名 USERNAME/td>
パスワード パスワード
シークレットのバージョン 1

エンティティ、オペレーション、アクション

すべての Integration Connectors が、接続されたアプリケーションのオブジェクトを抽象化するレイヤを提供します。アプリケーションのオブジェクトには、この抽象化を通じてのみアクセスできます。抽象化は、エンティティ、オペレーション、アクションとして公開されます。

  • エンティティ: エンティティは、接続されているアプリケーションやサービスのオブジェクト、またはプロパティのコレクションと考えることができます。エンティティの定義は、コネクタによって異なります。たとえば、データベース コネクタでは、テーブルがエンティティであり、ファイル サーバー コネクタでは、フォルダがエンティティです。また、メッセージング システム コネクタでは、キューがエンティティです。

    ただし、コネクタでいずれのエンティティもサポートされていない、またはエンティティが存在しない可能性があります。その場合、Entities リストは空になります。

  • オペレーション: エンティティに対して行うことができるアクティビティです。エンティティに対して次のいずれかのオペレーションを行うことができます。

    使用可能なリストからエンティティを選択すると、そのエンティティで使用可能なオペレーションのリストが生成されます。オペレーションの詳細については、コネクタタスクのエンティティ オペレーションをご覧ください。ただし、コネクタがいずれかのエンティティ オペレーションをサポートしていない場合、サポートされていないオペレーションは Operations リストに含まれません。

  • アクション: コネクタ インターフェースを介して統合で使用できる主要な関数の一つです。アクションを使用すると、1 つまたは複数のエンティティに対して変更を加えることができます。また、使用できるアクションはコネクタごとに異なります。通常、アクションには入力パラメータと出力パラメータがあります。ただし、コネクタがどのアクションもサポートしていない可能性があります。その場合は、Actions リストが空になります。

システムの上限

Elasticsearch コネクタは、ノードごとに 1 秒あたり 10 件のトランザクションを処理することができ、この上限を超えるトランザクションはすべてスロットルされます。 デフォルトでは、Integration Connectors は、接続に 2 つのノードを割り当てます(可用性を高めるため)。

Integration Connectors に適用される上限の詳細については、上限をご覧ください。

操作

このセクションには、コネクタでサポートされているアクションが一覧表示されます。アクションの構成方法については、アクションの例をご覧ください。

CreateIndex アクション

このアクションにより、インデックスが作成されます。

CreateIndex アクションの入力パラメータ

パラメータ名 データ型 必須 説明
AliasFilter 文字列 × エイリアスがアクセスできるドキュメントを制限するために使用されるクエリ DSL オブジェクト。
NumberOfShards 文字列 × 作成されたインデックスのプライマリ シャードの数。
AliasIsWriteIndex ブール値 × エイリアス インデックスが書き込み可能かどうかを指定します。
エイリアス 文字列 × インデックスのエイリアス。
AliasIndexRouting 文字列 × インデックス オペレーションを特定のシャードにルーティングするためにエイリアスに使用される値。指定すると、インデックス オペレーションのルーティング値が上書きされます。
インデックス 文字列 はい インデックスの名前。
NumberOfRoutingShards 文字列 × Elasticsearch が内部で使用する数値。NumberOfShards の値とともに、ドキュメントをプライマリ シャードにルーティングするために使用されます。
OtherSettings 文字列 × 設定の JSON オブジェクト。この設定は、NumberOfRoutingShards や NumberOfShards と組み合わせて使用することはできません。
マッピング 文字列 × インデックスのマッピングを指定する JSON オブジェクト。
AliasIsHidden ブール値 × エイリアスが非表示かどうかを指定します。エイリアスのすべてのインデックスに同じ is_hidden 値が必要です。
AliasRouting 文字列 × インデックス オペレーションと検索オペレーションを特定のシャードに転送する際に、エイリアスで使用される値。特定のオペレーションでは、AliasIndexRouting または AliasSearchRouting により上書きされる場合があります。

CreateIndex アクションの出力パラメータ

このアクションは、アクションが正常に完了した場合、ステータス 200(OK)を返します。

CreateIndex アクションの構成方法については、アクションの例をご覧ください。

ModifyIndexAliases アクション

このアクションにより、インデックス エイリアスが変更されます。

ModifyIndexAliases アクションの入力パラメータ

パラメータ名 データ型 必須 説明
エイリアス 文字列 × エイリアスの名前。複数のエイリアスはセミコロンで区切られます。
フィルタ 文字列 × エイリアスの作成時に使用するフィルタ。Query DSL を使用して、未加工の JSON フィルタを使用します。複数のフィルタはセミコロンで区切られます。
ルーティング 文字列 × エイリアスに関連付けるルーティング値。複数のルーティング値はセミコロンで区切られます。
SearchRouting 文字列 × オペレーションの検索でエイリアスに関連付けるルーティング値。複数の検索ルーティング値はセミコロンで区切られます。
IndexRouting 文字列 × インデックス登録オペレーションのエイリアスに関連付けるルーティング値。複数のインデックス ルーティング値はセミコロンで区切られます。
アクション 文字列 はい 実行するアクション(addremoveremove_index など)。 複数のアクションはセミコロンで区切られます。
インデックス 文字列 はい インデックスの名前。複数のインデックスはセミコロンで区切られます。

ModifyIndexAliases アクションの出力パラメータ

このアクションは、アクションが正常に完了した場合、ステータス 200(OK)を返します。

ModifyIndexAliases アクションの構成方法については、アクションの例をご覧ください。

ExecuteCustomQuery アクション

このアクションにより、カスタムクエリを実行できます。

カスタムクエリを作成する手順は次のとおりです。

  1. 詳細な手順に沿って、コネクタタスクを追加します。
  2. コネクタタスクを構成するときに、実行するアクションの種類で [Actions] を選択します。
  3. [Actions] リストで [Execute custom query] を選択し、[Done] をクリックします。

    execute-custom-query-action を示す画像 execute-custom-query-action を示す画像

  4. [Task input] セクションを開き、次の操作を行います。
    1. [タイムアウト後] フィールドに、クエリが実行されるまで待機する秒数を入力します。

      デフォルト値: 180

    2. [最大行数]フィールドに、データベースから返される最大行数を入力します。

      デフォルト値: 25

    3. カスタムクエリを更新するには、[Edit Custom Script] をクリックします。[Script editor] ダイアログが開きます。

      custom-sql-query を示す画像 custom-sql-query を示す画像

    4. [Script editor] ダイアログで、SQL クエリを入力して [Save] をクリックします。

      SQL ステートメントで疑問符(?)を使用して、クエリ パラメータ リストで指定する必要がある 1 つのパラメータを表すことができます。たとえば、次の SQL クエリは、LastName 列に指定された値と一致する Employees テーブルからすべての行を選択します。

      SELECT * FROM Employees where LastName=?

    5. SQL クエリで疑問符を使用した場合は、各疑問符の [+ パラメータ名を追加] をクリックして、パラメータを追加する必要があります。統合の実行中に、これらのパラメータにより SQL クエリ内の疑問符(?)が順番に置き換わります。たとえば、3 つの疑問符(?)を追加した場合、3 つのパラメータを順番に追加する必要があります。

      add-query-param を示す画像 add-query-param を示す画像

      クエリ パラメータを追加する手順は次のとおりです。

      1. [Type] リストから、パラメータのデータ型を選択します。
      2. [] フィールドに、パラメータの値を入力します。
      3. 複数のパラメータを追加するには、[+ クエリ パラメータを追加] をクリックします。

アクションが正常に実行されると、クエリ結果のあるレスポンスの本文でステータス 200(OK)を返します。

アクションの例

このセクションでは、このコネクタでいくつかのアクションを実行する方法について説明します。

例 - インデックスを作成する

この例では、インデックスを作成します。

  1. [Configure connector task] ダイアログで、[Actions] をクリックします。
  2. [CreateIndex] アクションを選択してから、[完了] をクリックします。
  3. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のような値を入力します。
    {
    "Index": "new_index_1"
    }
  4. アクションが成功すると、CreateIndex タスクの connectorOutputPayload レスポンス パラメータの値は次のようになります。

    [{
    "CompletedBeforeTimeout": "true",
    "ShardsAcknowledged": "true",
    "IndexName": "new_index_1"
    }]

例 - インデックス エイリアスを変更する

この例では、インデックス エイリアスを変更する方法を示します。

  1. [Configure connector task] ダイアログで、[Actions] をクリックします。
  2. [ModifyIndexAliases] アクションを選択してから、[完了] をクリックします。
  3. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のような値を入力します。
    {
    "Action": "remove_index",
    "Index": "postmanindex"
    }
  4. アクションが成功すると、ModifyIndexAliases タスクの connectorOutputPayload レスポンス パラメータの値は次のようになります。

    [{
    }]

エンティティ オペレーションの例

このセクションでは、このコネクタでエンティティ オペレーションの一部を実行する方法について説明します。

例 - すべてのレコードを一覧表示する

この例では、Demoindex エンティティ内のすべてのレコードを一覧表示します。

  1. [Configure connector task] ダイアログで、[Entities] をクリックします。
  2. Entity から Demoindex を選択します。
  3. [List] オペレーションを選択してから、[完了] をクリックします。
  4. 必要に応じて、コネクタタスクの [タスク入力] セクションでフィルタ句を指定して、結果セットをフィルタリングできます。 フィルタ句の値は、常に単一引用符(')内で指定します。

例 - エンティティからレコードを取得する

この例では、Demoindex エンティティから、指定した ID のレコードを取得します。

  1. [Configure connector task] ダイアログで、[Entities] をクリックします。
  2. Entity から Demoindex を選択します。
  3. [Get] オペレーションを選択してから、[完了] をクリックします。
  4. [コネクタタスクの [タスク入力 セクションで [entityId] をクリックし、[デフォルト値] フィールドに 23 を入力します。

    ここで、23Demoindex エンティティの一意のレコード ID です。

例 - エンティティにレコードを作成する

この例では、Demoindex エンティティに レコードを作成します。

  1. [Configure connector task] ダイアログで、[Entities] をクリックします。
  2. Entity から Demoindex を選択します。
  3. [Create] オペレーションを選択してから、[完了] をクリックします。
  4. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のような値を入力します。
    {
    "message": "GET /search HTTP/1.1 200 1070000",
    "@timestamp": "2099-11-15 13:12:00.0"
    }

    統合に成功すると、コネクタタスクの connectorOutputPayload フィールドの値は次のようになります。

    [{
    "_id": "23"
    }]

例 - レコードを更新する

この例では、Demoindex エンティティ内の指定された ID のレコードを更新します。

  1. [Configure connector task] ダイアログで、[Entities] をクリックします。
  2. Entity から Demoindex を選択します。
  3. [Update] オペレーションを選択してから、[完了] をクリックします。
  4. [コネクタ] タスクの [タスク入力] セクションで、connectorInputPayload をクリックし、Default Valueフィールドに次のような値を入力します。
    {
    "message": "GET /search HTTP/1.1 200 1070000",
    "@timestamp": "2099-11-15 13:12:00.0",
    "name": "GoogleCloud_Update_docs",
    "price": 10.0}
  5. [エンティティ ID] をクリックし、[デフォルト値] フィールドに「23」と入力します。

    統合に成功すると、コネクタタスクの connectorOutputPayload フィールドの値は次のようになります。

    [{
    "_id": "23"
    }]

例 - エンティティからレコードを削除する

この例では、Demoindex エンティティ内の指定された ID のレコードを削除します。

  1. [Configure connector task] ダイアログで、[Entities] をクリックします。
  2. Entity から Demoindex を選択します。
  3. [Delete] オペレーションを選択してから、[完了] をクリックします。
  4. [コネクタタスクの [タスク入力 セクションで [entityId] をクリックし、[デフォルト値] フィールドに pcqT4wB4uQNUCuamh4N を入力します。

Terraform を使用して接続を作成する

Terraform リソースを使用して、新しい接続を作成できます。

Terraform 構成を適用または削除する方法については、基本的な Terraform コマンドをご覧ください。

接続作成用の Terraform テンプレートのサンプルを表示するには、サンプル テンプレートをご覧ください。

Terraform を使用してこの接続を作成する場合は、Terraform 構成ファイルで次の変数を設定する必要があります。

パラメータ名 データ型 必須 説明
client_side_evaluation BOOLEAN False ネストされたオブジェクトに対して評価のクライアントサイドを実行するには、ClientSideEvaluation を true に設定します。
data_model ENUM False Elasticsearch ドキュメントの解析とデータベース メタデータの生成時に使用するデータモデルを指定します。サポートされている値は、Document、FlattenedDocuments、Relationalです。
max_results STRING False デフォルトの Search API の使用時に Elasticsearch から返される最大結果数。
詳細度 STRING False 接続の詳細レベルは 1~5 です。詳細レベルが高いと、すべての通信の詳細(リクエスト、レスポンス、SSL 証明書)がログに記録されます。
proxy_enabled BOOLEAN False 接続用のプロキシ サーバーを構成するには、このチェックボックスをオンにします。
proxy_auth_scheme ENUM False ProxyServer プロキシへの認証に使用する認証タイプです。サポートされている値は、BASIC、DIGEST、NONE です。
proxy_user STRING False ProxyServer プロキシへの認証に使用されるユーザー名です。
proxy_password SECRET False ProxyServer プロキシの認証に使用されるパスワード。
proxy_ssltype ENUM False ProxyServer プロキシへの接続時に使用する SSL のタイプです。サポートされている値は AUTO、ALWAYS、NEVER、TUNNEL です。

統合で Elasticsearch 接続を使用する

接続を作成すると、Apigee Integration と Application Integration の両方で使用できるようになります。この接続は、コネクタタスクを介して統合で使用できます。

  • Apigee Integration で Connectors タスクを作成して使用する方法については、Connectors タスクをご覧ください。
  • Application Integration で Connectors タスクを作成して使用する方法については、Connectors タスクをご覧ください。

Google Cloud コミュニティの助けを借りる

Google Cloud コミュニティの Cloud フォーラムで質問を投稿したり、このコネクタについてディスカッションしたりできます。

次のステップ