Kaedah pembersihan dan pengarkiban data masa nyata menggunakan Elasticsearch dalam PHP
Pembersihan dan pengarkiban data adalah aspek yang sangat penting dalam pemprosesan data, yang dapat memastikan ketepatan dan kesempurnaan data. Dalam pemprosesan data masa nyata, kami sering menghadapi sejumlah besar data masa nyata yang perlu dibersihkan dan diarkibkan Artikel ini akan memperkenalkan cara menggunakan PHP dan Elasticsearch untuk mencapai proses ini.
Elasticsearch ialah enjin carian sumber terbuka berdasarkan Lucene, yang menyediakan enjin carian dan analisis teks penuh yang diedarkan. Ia dicirikan dengan cepat, stabil dan mampu mengendalikan data berskala besar.
Mula-mula, kita perlu memasang dan mengkonfigurasi Elasticsearch. Anda boleh memuat turun versi yang sesuai untuk sistem anda dari tapak web rasmi (https://www.elastic.co/), dan memasang serta mengkonfigurasinya mengikut dokumentasi rasmi.
Menggunakan Komposer untuk mengurus kebergantungan PHP adalah cara yang baik, kami boleh memasang klien Elasticsearch PHP melalui Komposer.
Buat fail composer.json dalam direktori root projek dan tambah kandungan berikut:
{ "require": { "elasticsearch/elasticsearch": "^7.0" } }
Kemudian gunakan Composer untuk memasang dependencies:
composer install
kita perlu terlebih dahulu dalam kod, sambung ke pelayan Elasticsearch . Ini boleh dicapai dengan mudah menggunakan kelas ElasticsearchClient yang disediakan oleh klien Elasticsearch PHP.
require 'vendor/autoload.php'; $hosts = [ [ 'host' => 'localhost', 'port' => 9200, 'scheme' => 'http', ], ]; $client = ElasticsearchClientBuilder::create() ->setHosts($hosts) ->build();
Dalam kod di atas, kami menyatakan nama hos, nombor port dan protokol pelayan Elasticsearch. Ia boleh diubah suai mengikut keperluan mengikut keadaan sebenar.
Dalam Elasticsearch, data disimpan dalam bentuk indeks. Kita perlu mencipta indeks terlebih dahulu dan menentukan jenis data dan hubungan pemetaan setiap medan.
$params = [ 'index' => 'data', 'body' => [ 'mappings' => [ 'properties' => [ 'timestamp' => [ 'type' => 'date', ], 'message' => [ 'type' => 'text', ], 'status' => [ 'type' => 'keyword', ], ], ], ], ]; $response = $client->indices()->create($params);
Dalam kod di atas, kami mencipta indeks bernama "data" dan menentukan medan "cap masa" sebagai jenis tarikh, medan "mesej" sebagai jenis teks dan medan "status" sebagai jenis kata kunci.
Dalam proses pembersihan dan pengarkiban data, kami boleh menggunakan API pertanyaan dan pengindeksan yang disediakan oleh Elasticsearch untuk mencapainya.
Sebagai contoh, kita boleh menggunakan pernyataan query_string query untuk menapis data yang perlu dibersihkan dan diarkibkan:
$params = [ 'index' => 'raw_data', 'body' => [ 'query' => [ 'query_string' => [ 'query' => 'status:success AND timestamp:[now-1h TO now]', ], ], ], ]; $response = $client->search($params);
Dalam kod di atas, kami menggunakan query_string query statement untuk menapis data dengan status "berjaya" dan cap masa dalam sejam terakhir. Mengikut keperluan sebenar, syarat pertanyaan boleh diubah suai mengikut keperluan.
Kemudian, kami boleh menggunakan API indeks pukal untuk mengarkibkan data yang telah dibersihkan ke dalam indeks yang ditentukan:
$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);
Dalam kod di atas, kami menggunakan API indeks pukal untuk melaksanakan operasi pengindeksan kelompok pada data yang akan diarkibkan.
Untuk mencapai pembersihan dan pengarkiban data masa nyata, kami boleh menggunakan tugas berjadual untuk melaksanakan proses pemprosesan data dengan kerap. Dalam sistem Linux, kami boleh menggunakan cron untuk menyediakan tugas yang dijadualkan.
Sebagai contoh, kita boleh mencipta skrip PHP bernama "clean.php" yang mengandungi kod untuk pembersihan dan pengarkiban data, dan menggunakan cron untuk menetapkannya supaya dilaksanakan setiap jam:
0 * * * * php /path/to/clean.php
Dalam kod di atas, "0 " bermaksud ia akan dilaksanakan pada 0 minit setiap jam.
Ringkasnya, kami boleh menggunakan PHP dan Elasticsearch untuk melaksanakan kaedah pembersihan dan pengarkiban data masa nyata. Sejumlah besar data masa nyata boleh dibersihkan dan diarkibkan dengan cekap dengan menyambung ke pelayan Elasticsearch, mencipta indeks dan pemetaan, menggunakan API pertanyaan dan indeks untuk pemprosesan data, dan menggunakan tugas berjadual untuk melaksanakan proses pemprosesan data secara tetap.
Atas ialah kandungan terperinci Kaedah pembersihan dan pengarkiban data masa nyata menggunakan Elasticsearch dalam PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!