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 によって変化することを確認してください。結合クエリは、数値データ型のフィールドに対してのみ実行できます。
手順
ElasticsearchクラスターのKibanaコンソールにログオンし、指示に従ってKibanaコンソールのホームページに移動します。
Kibanaコンソールへのログオン方法の詳細については、「Kibanaコンソールにログオンする」をご参照ください。
説明この例では、Elasticsearch V6.7.0 クラスターを使用しています。他のバージョンのクラスターでの操作は異なる場合があります。コンソールでの実際の操作が優先されます。
表示されるページの左側のナビゲーションペインで、[dev Tools] をクリックします。
[console] タブで、次のコマンドを実行してプラグインを有効にします。
PUT _cluster/settings { "transient": { "aliyun.sql.enabled": true } }
データを書き込みます。
説明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"}
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" ] ] }