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

Elasticsearch:使用方法

最終更新日:Jan 11, 2025

aliyun-sqlプラグインは、SQLクエリを解析するために使用されます。このプラグインをAlibaba Cloud Elasticsearchクラスターにインストールすると、SQLステートメントを実行してクラスター内のデータをクエリできます。このプラグインはサービスを提供しなくなりました。代わりに、Elasticが提供する x-pack-sql プラグインを使用できます。

説明

aliyun-sqlプラグインは新規ユーザーは利用できなくなりました。既存のユーザーは引き続きプラグインを使用できます。 ElasticsearchクラスターのデータをクエリするためにSQLステートメントを実行する場合は、Elasticが提供する x-pack-sql プラグインを使用できます。 x-pack-sql プラグインの詳細については、「sql-search-api」をご参照ください。

前提条件

  • Alibaba Cloud Elasticsearchクラスターが作成されていること。クラスターのバージョンは V6.7.0 以降、V7.10.0 より前である必要があります。

  • aliyun-sqlプラグインがインストールされていること。

    プラグインがインストールされているかどうかは、クラスターのプラグイン構成ページで確認できます。

注意事項

  • プラグインを使用する前に、Elasticsearchクラスターの aliyun.sql.enabled パラメーターが true に設定されていることを確認してください。Kibanaコンソールでパラメーターを設定できます。詳細については、「Kibanaコンソールにログオンする」をご参照ください。

  • プラグインを手動で削除できます。プラグインを削除する前に、Kibanaコンソールで次のコマンドを実行して無効にしてください。プラグインを無効にするには、aliyun.sql.enabled を null に設定します。次のコードは構成を示しています。

    PUT _cluster/settings
    {
      "persistent": {
        "aliyun.sql.enabled": null
      }
    }

    プラグインの削除により、クラスターが再起動します。プラグインを削除する前に無効にしないと、クラスターは再起動で停止したままになります。この場合、次のコマンドを実行してアーカイブ構成をクリアし、再起動を再開する必要があります。

    PUT _cluster/settings
    {
      "persistent": {
        "archived.aliyun.sql.enabled": null
      }
    }

構文の概要

aliyun-sqlプラグインは MySQL 5.0 の構文を使用し、幅広い関数と式をサポートしています。詳細については、「その他の関数と式」をご参照ください。

  • 基本クエリ

    SELECT [DISTINCT] (* | expression) [[AS] alias] [, ...]
    FROM table_name
    [WHERE condition]
    [GROUP BY expression [, ...]
     [HAVING condition]]
    [ORDER BY expression [ ASC | DESC ] [, ...]]
    [LIMIT [offset, ] size]
  • 結合クエリ

    SELECT
      expression
    FROM table_name
    JOIN table_name 
     ON expression
    [WHERE condition] 
    重要
    • 結合クエリを実行する場合、Alibaba Cloud Elasticsearch は、単一のテーブルからクエリできるデータエントリの最大数を制限します。デフォルト値は 10,000 です。 max.join.size パラメーターを設定することで、テーブルからクエリできるデータエントリの最大数を指定できます。たとえば、Kibanaコンソールで次のコマンドを実行して、最大数を 20,000 に設定できます。

      PUT /_cluster/settings
      {
        "transient": {
          "max.join.size": 20000
        }
      }
    • 実行した結合クエリは内部結合クエリです。実際には、aliyun-sqlプラグインはクエリに対してマージ結合を実行します。結合クエリを実行する場合は、結合するテーブルのフィールド値がElasticsearchのドキュメント ID によって変化することを確認してください。結合クエリは、数値データ型のフィールドに対してのみ実行できます。

手順

  1. ElasticsearchクラスターのKibanaコンソールにログオンし、指示に従ってKibanaコンソールのホームページに移動します。

    Kibanaコンソールへのログオン方法の詳細については、「Kibanaコンソールにログオンする」をご参照ください。

    説明

    この例では、Elasticsearch V6.7.0 クラスターを使用しています。他のバージョンのクラスターでの操作は異なる場合があります。コンソールでの実際の操作が優先されます。

  2. 表示されるページの左側のナビゲーションペインで、[dev Tools] をクリックします。

  3. [console] タブで、次のコマンドを実行してプラグインを有効にします。

    PUT _cluster/settings
    {
      "transient": {
        "aliyun.sql.enabled": true
      }
    }
  4. データを書き込みます。

    説明

    aliyun-sqlプラグインは書き込みリクエストをサポートしていません。クエリリクエストのみをサポートしています。したがって、次のコードではバルクリクエストを使用してデータを書き込みます。

    • 学生情報のデータ

      PUT stuinfo/_doc/_bulk?refresh
      {"index":{"_id":"1"}}
      {"id":572553,"name":"xiaoming","age":"22","addr":"addr1"}
      {"index":{"_id":"2"}}
      {"id":572554,"name":"xiaowang","age":"23","addr":"addr2"}
      {"index":{"_id":"3"}}
      {"id":572555,"name":"xiaoliu","age":"21","addr":"addr3"}
    • 学生ランキングのデータ

      PUT sturank/_doc/_bulk?refresh
      {"index":{"_id":"1"}}
      {"id":572553,"score":"90","sorder":"5"}
      {"index":{"_id":"2"}}
      {"id":572554,"score":"92","sorder":"3"}
      {"index":{"_id":"3"}}
      {"id":572555,"score":"86","sorder":"10"}
  5. SQLステートメントを実行します。

    結合クエリを実行して、学生の名前とランキングをクエリします。

    POST /_alisql
    {
      "query":"select stuinfo.name,sturank.sorder from stuinfo join sturank on stuinfo.id=sturank.id"
    }

    ステートメントが正常に実行されると、aliyun-sqlプラグインはテーブル情報を返します。 columns フィールドには、列名とデータ型が含まれています。 rows フィールドには、行データが含まれています。

    {
      "columns" : [
        {
          "name" : "name",
          "type" : "text"
        },
        {
          "name" : "sorder",
          "type" : "text"
        }
      ],
      "rows" : [
        [
          "xiaoming",
          "5"
        ],
        [
          "xiaowang",
          "3"
        ],
        [
          "xiaoliu",
          "10"
        ]
      ]
    }