Rumah > pembangunan bahagian belakang > tutorial php > Kaedah pembersihan dan pengarkiban data masa nyata menggunakan Elasticsearch dalam PHP

Kaedah pembersihan dan pengarkiban data masa nyata menggunakan Elasticsearch dalam PHP

PHPz
Lepaskan: 2023-07-09 19:46:01
asal
1522 orang telah melayarinya

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.

  1. Pengenalan kepada Elasticsearch

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.

  1. Pasang dan konfigurasikan Elasticsearch

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.

  1. Pasang klien Elasticsearch PHP

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"
    }
}
Salin selepas log masuk

Kemudian gunakan Composer untuk memasang dependencies:

composer install
Salin selepas log masuk
  1. Sambung ke Elasticsearch

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();
Salin selepas log masuk

Dalam kod di atas, kami menyatakan nama hos, nombor port dan protokol pelayan Elasticsearch. Ia boleh diubah suai mengikut keperluan mengikut keadaan sebenar.

  1. Buat indeks dan pemetaan

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);
Salin selepas log masuk

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.

  1. Pembersihan dan pengarkiban data

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);
Salin selepas log masuk

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);
Salin selepas log masuk

Dalam kod di atas, kami menggunakan API indeks pukal untuk melaksanakan operasi pengindeksan kelompok pada data yang akan diarkibkan.

  1. Tugas berjadual

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan