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

Elasticsearch:同期方法の選択

最終更新日:Nov 09, 2025

ApsaraDB RDS データベースの使用時にクエリが遅い場合は、データベースから Alibaba Cloud Elasticsearch クラスターにデータを同期して、データクエリと分析を行うことができます。Alibaba Cloud Elasticsearch は、Lucene ベースの分散検索および分析エンジンです。これにより、大量のデータセットをほぼリアルタイムで保存、クエリ、分析できます。Data Transmission Service (DTS)、Logstash、DataWorks、または Canal を使用して、ApsaraDB RDS データベースから Alibaba Cloud Elasticsearch クラスターにデータを同期できます。このトピックでは、各方法の使用シナリオについて説明します。必要に応じて方法を選択できます。

同期プラン

説明

ユースケース

制限

参照

DTSを使用してリアルタイムでデータを同期する

DTS は、バイナリログをサブスクライブすることでデータを同期します。DTS を使用したデータ同期は、ミリ秒レベルのレイテンシーしかなく、ソースデータベースに悪影響を与えません。

データ同期のリアルタイムパフォーマンスに対する要件が高い場合。

  • DTSは、フルデータを初期化するときに、ソースデータベースとデスティネーションクラスターの読み取りおよび書き込みリソースを使用します。これにより、データベースとクラスターの負荷が増加する可能性があります。

  • インデックスのマッピングをカスタマイズできます。ただし、マッピングで定義されているフィールドがソースデータベースのフィールドと同じであることを確認する必要があります。

  • DTSコンソールでデータ同期インスタンスを購入する必要があります。 データ同期インスタンスの購入方法については、DTSインスタンスの購入をご参照ください。 DTSの料金については、課金概要をご参照ください。

DTSを使用してMySQLデータをAlibaba Cloud Elasticsearchクラスターにリアルタイムで同期する

logstash-input-jdbcプラグインを使用してデータを同期する

logstash-input-jdbc プラグインを使用して、ApsaraDB RDS データベース内のデータをクエリし、データを Elasticsearch クラスターに移行できます。データ同期中、プラグインはラウンドロビン方式を使用して、データベースに新しく挿入または更新されたデータを定期的に識別します。次に、プラグインは識別されたすべてのデータを一度にクエリし、データを Elasticsearch クラスターに移行します。logstash-input-jdbc プラグインを使用したデータ同期は、DTS を使用したデータ同期よりもリアルタイムパフォーマンスが低く、秒レベルのレイテンシーがあります。

  • フルデータを同期し、数秒のレイテンシを許容できる場合。

  • 一度に特定のデータをクエリして同期する場合。

  • この方法を使用する前に、ApsaraDB RDSデータベースのバージョンと互換性のあるSQL JDBCドライバーをアップロードする必要があります。

  • Logstashクラスター内のノードのIPアドレスを、ApsaraDB RDSインスタンスのIPアドレスホワイトリストに追加する必要があります。

  • LogstashクラスターとApsaraDB RDSインスタンスは、同じタイムゾーンに存在する必要があります。 これにより、データ同期中のタイムスタンプの不一致を防ぎます。

  • Elasticsearchクラスターの _id フィールドの値が、ApsaraDB RDSデータベースの id フィールドの値と同じであることを確認する必要があります。

  • ApsaraDB RDSデータベースにデータを挿入または更新するときは、関連するレコードに挿入または更新時間を示すフィールドが含まれていることを確認する必要があります。

Logstashを使用してApsaraDB RDS for MySQLからElasticsearchにデータを同期する

DataWorksを使用してオフラインデータを同期する

DataWorksは、Data Integration、DataStudio、Data Qualityなどのモジュールを提供する包括的なサービスです。 DataWorksを使用して、構造化データをインポートおよび保存し、データを変換および開発し、処理済みデータをElasticsearchクラスターまたは他のデータシステムに同期できます。

  • オフラインのビッグデータを同期する場合。 DataWorksは、最短数分間隔でオフラインデータを収集できます。

  • WHERE 句を使用してデータをフィルター処理する必要がある。

  • ApsaraDB RDSデータベースのすべてのデータを同期する場合。

  • DataWorksサービスをアクティブ化する必要があります。

  • 高い伝送速度が必要な場合、またはネットワーク環境が複雑な場合は、リソースグループをカスタマイズする必要があります。

  • 使用するリソースグループのIPアドレスを、ApsaraDB RDSインスタンスのIPアドレスホワイトリストに追加する必要があります。

DataWorksを使用してMySQLデータベースからAlibaba Cloud Elasticsearchクラスターにデータを同期する

Canalを使用してMySQLデータを同期する

Canal は、バイナリログをサブスクライブすることでリアルタイムにデータを同期します。Canal を使用したデータ同期は、ミリ秒レベルのレイテンシーしかなく、ソースデータベースに悪影響を与えません。

データ同期のリアルタイムパフォーマンスに対する要件が高い場合。

  • Elastic Compute Service (ECS)インスタンスにCanal環境を構築する必要があります。 ただし、これによりデータ同期コストが増加します。

  • Canal 1.1.4を使用してElasticsearch V7.Xクラスターにデータを同期することはできません。 Canal 1.1.5、またはLogstashやDTSなどの方法を使用して、MySQLデータをElasticsearch V7.Xクラスターに同期することをお勧めします。

  • インデックスのマッピングをカスタマイズできます。ただし、マッピングで定義されているフィールドがソースデータベースのフィールドと同じであることを確認する必要があります。

  • Canalの可用性を確保する必要があります。 そうしないと、障害が発生したり、ビジネスに影響が及ぶ可能性があります。 たとえば、ECSインスタンスの再起動や例外によるCanalの終了などのシナリオで、データ同期が中断されないようにする必要があります。

Canalを使用してMySQLデータをAlibaba Cloud Elasticsearchに同期する