PHP で Elasticsearch を使用したリアルタイムのデータ クリーニングおよびアーカイブ方法
データ クリーニングとアーカイブはデータ処理における非常に重要なリンクであり、データの正確性と整合性を確保できます。リアルタイム データ処理では、大量のリアルタイム データをクリーンアップしてアーカイブする必要があることがよくありますが、この記事では、PHP と Elasticsearch を使用してこのプロセスを実現する方法を紹介します。
Elasticsearch は、分散型全文検索および分析エンジンを提供する、Lucene に基づくオープン ソースの検索エンジンです。高速で安定しており、大規模なデータを扱えるのが特徴です。
まず、Elasticsearch をインストールして構成する必要があります。公式 Web サイト (https://www.elastic.co/) からシステムに適したバージョンをダウンロードし、公式ドキュメントに従ってインストールおよび設定できます。
Composer を使用して PHP の依存関係を管理することは良い方法であり、Composer を通じて Elasticsearch PHP クライアントをインストールできます。
プロジェクトのルート ディレクトリにcomposer.json ファイルを作成し、次のコンテンツを追加します:
{ "require": { "elasticsearch/elasticsearch": "^7.0" } }
次に、Composer を使用して依存関係をインストールします:
composer install
コードでは、まず Elasticsearch サーバーに接続する必要があります。これは、Elasticsearch PHP クライアントによって提供される ElasticsearchClient クラスを使用して簡単に実現できます。
require 'vendor/autoload.php'; $hosts = [ [ 'host' => 'localhost', 'port' => 9200, 'scheme' => 'http', ], ]; $client = ElasticsearchClientBuilder::create() ->setHosts($hosts) ->build();
上記のコードでは、Elasticsearch サーバーのホスト名、ポート番号、プロトコルを指定しました。実際の状況に応じて必要に応じて変更できます。
Elasticsearch では、データはインデックスの形式で保存されます。最初にインデックスを作成し、各フィールドのデータ型とマッピング関係を指定する必要があります。
$params = [ 'index' => 'data', 'body' => [ 'mappings' => [ 'properties' => [ 'timestamp' => [ 'type' => 'date', ], 'message' => [ 'type' => 'text', ], 'status' => [ 'type' => 'keyword', ], ], ], ], ]; $response = $client->indices()->create($params);
上記のコードでは、「data」という名前のインデックスを作成し、日付タイプとして「タイムスタンプ」フィールド、テキストタイプとして「メッセージ」フィールド、およびテキストタイプとして「ステータス」フィールドを指定しました。キーワードタイプです。
データのクリーニングとアーカイブのプロセスでは、Elasticsearch が提供するクエリとインデックス API を使用してそれを実現できます。
たとえば、query_string クエリ ステートメントを使用して、クリーンアップおよびアーカイブする必要があるデータをフィルタリングできます。
$params = [ 'index' => 'raw_data', 'body' => [ 'query' => [ 'query_string' => [ 'query' => 'status:success AND timestamp:[now-1h TO now]', ], ], ], ]; $response = $client->search($params);
上記のコードでは、query_string クエリ ステートメントを使用して、ステータスは「成功」、タイムスタンプは過去 1 時間以内のデータです。実際のニーズに応じて、クエリ条件を必要に応じて変更できます。
その後、バルク インデックス API を使用して、クリーンアップされたデータを指定したインデックスにアーカイブできます。
$params = [ 'index' => 'data', 'body' => [], ]; foreach ($response['hits']['hits'] as $hit) { $params['body'][] = [ 'index' => [ '_index' => 'data', '_id' => $hit['_id'], ], ]; $params['body'][] = $hit['_source']; } $client->bulk($params);
上記のコードでは、バルク インデックス API を使用して、データのインデックスをバッチ作成します。アーカイブされました。
リアルタイムのデータ クリーニングとアーカイブを実現するために、スケジュールされたタスクを使用してデータ処理プロセスを定期的に実行できます。 Linux システムでは、cron を使用してスケジュールされたタスクを設定できます。
たとえば、データのクリーニングとアーカイブのコードを含む「clean.php」という名前の PHP スクリプトを作成し、cron を使用してそれを 1 時間ごとに実行するように設定できます。コード中の「0
」は、1時間に1回0分に実行されることを意味します。 要約すると、PHP と Elasticsearch を使用して、リアルタイムのデータ クリーニングとアーカイブの方法を実装できます。 Elasticsearch サーバーに接続し、インデックスとマッピングを作成し、データ処理にクエリ API とインデックス API を使用し、スケジュールされたタスクを使用してデータ処理プロセスを定期的に実行することにより、大量のリアルタイム データを効率的にクリーンアップしてアーカイブできます。
以上がPHP で Elasticsearch を使用したリアルタイムのデータ クリーニングおよびアーカイブ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。