ホームページ  >  記事  >  バックエンド開発  >  PHP で Elasticsearch を使用したリアルタイムのデータ クリーニングおよびアーカイブ方法

PHP で Elasticsearch を使用したリアルタイムのデータ クリーニングおよびアーカイブ方法

PHPz
PHPzオリジナル
2023-07-09 19:42:321499ブラウズ

PHP で Elasticsearch を使用したリアルタイムのデータ クリーニングおよびアーカイブ方法

データ クリーニングとアーカイブはデータ処理における非常に重要なリンクであり、データの正確性と整合性を確保できます。リアルタイム データ処理では、大量のリアルタイム データをクリーンアップしてアーカイブする必要があることがよくありますが、この記事では、PHP と Elasticsearch を使用してこのプロセスを実現する方法を紹介します。

  1. Elasticsearch の概要

Elasticsearch は、分散型全文検索および分析エンジンを提供する、Lucene に基づくオープン ソースの検索エンジンです。高速で安定しており、大規模なデータを扱えるのが特徴です。

  1. Elasticsearch のインストールと構成

まず、Elasticsearch をインストールして構成する必要があります。公式 Web サイト (https://www.elastic.co/) からシステムに適したバージョンをダウンロードし、公式ドキュメントに従ってインストールおよび設定できます。

  1. Elasticsearch PHP クライアントをインストールする

Composer を使用して PHP の依存関係を管理することは良い方法であり、Composer を通じて Elasticsearch PHP クライアントをインストールできます。

プロジェクトのルート ディレクトリにcomposer.json ファイルを作成し、次のコンテンツを追加します:

{
    "require": {
        "elasticsearch/elasticsearch": "^7.0"
    }
}

次に、Composer を使用して依存関係をインストールします:

composer install
  1. Connect Elasticsearch へ

コードでは、まず Elasticsearch サーバーに接続する必要があります。これは、Elasticsearch PHP クライアントによって提供される ElasticsearchClient クラスを使用して簡単に実現できます。

require 'vendor/autoload.php';

$hosts = [
    [
        'host' => 'localhost',
        'port' => 9200,
        'scheme' => 'http',
    ],
];

$client = ElasticsearchClientBuilder::create()
    ->setHosts($hosts)
    ->build();

上記のコードでは、Elasticsearch サーバーのホスト名、ポート番号、プロトコルを指定しました。実際の状況に応じて必要に応じて変更できます。

  1. インデックスとマッピングの作成

Elasticsearch では、データはインデックスの形式で保存されます。最初にインデックスを作成し、各フィールドのデータ型とマッピング関係を指定する必要があります。

$params = [
    'index' => 'data',
    'body' => [
        'mappings' => [
            'properties' => [
                'timestamp' => [
                    'type' => 'date',
                ],
                'message' => [
                    'type' => 'text',
                ],
                'status' => [
                    'type' => 'keyword',
                ],
            ],
        ],
    ],
];

$response = $client->indices()->create($params);

上記のコードでは、「data」という名前のインデックスを作成し、日付タイプとして「タイムスタンプ」フィールド、テキストタイプとして「メッセージ」フィールド、およびテキストタイプとして「ステータス」フィールドを指定しました。キーワードタイプです。

  1. データのクリーニングとアーカイブ

データのクリーニングとアーカイブのプロセスでは、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 を使用して、データのインデックスをバッチ作成します。アーカイブされました。

  1. スケジュールされたタスク

リアルタイムのデータ クリーニングとアーカイブを実現するために、スケジュールされたタスクを使用してデータ処理プロセスを定期的に実行できます。 Linux システムでは、cron を使用してスケジュールされたタスクを設定できます。

たとえば、データのクリーニングとアーカイブのコードを含む「clean.php」という名前の PHP スクリプトを作成し、cron を使用してそれを 1 時間ごとに実行するように設定できます。コード中の「0

」は、1時間に1回0分に実行されることを意味します。 要約すると、PHP と Elasticsearch を使用して、リアルタイムのデータ クリーニングとアーカイブの方法を実装できます。 Elasticsearch サーバーに接続し、インデックスとマッピングを作成し、データ処理にクエリ API とインデックス API を使用し、スケジュールされたタスクを使用してデータ処理プロセスを定期的に実行することにより、大量のリアルタイム データを効率的にクリーンアップしてアーカイブできます。

以上がPHP で Elasticsearch を使用したリアルタイムのデータ クリーニングおよびアーカイブ方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。