Heim  >  Artikel  >  Backend-Entwicklung  >  Methode zur Datenbereinigung und -archivierung in Echtzeit mit Elasticsearch in PHP

Methode zur Datenbereinigung und -archivierung in Echtzeit mit Elasticsearch in PHP

PHPz
PHPzOriginal
2023-07-09 19:42:321447Durchsuche

Echtzeit-Datenbereinigungs- und -archivierungsmethode mit Elasticsearch in PHP

Datenbereinigung und -archivierung sind sehr wichtige Aspekte bei der Datenverarbeitung, die die Genauigkeit und Vollständigkeit der Daten gewährleisten können. Bei der Echtzeitdatenverarbeitung müssen wir häufig große Mengen an Echtzeitdaten bereinigen und archivieren. In diesem Artikel wird erläutert, wie Sie diesen Prozess mit PHP und Elasticsearch erreichen.

  1. Einführung in Elasticsearch

Elasticsearch ist eine Open-Source-Suchmaschine auf Basis von Lucene, die eine verteilte Volltextsuch- und Analysemaschine bereitstellt. Es zeichnet sich dadurch aus, dass es schnell und stabil ist und große Datenmengen verarbeiten kann.

  1. Elasticsearch installieren und konfigurieren

Zuerst müssen wir Elasticsearch installieren und konfigurieren. Sie können die für Ihr System geeignete Version von der offiziellen Website (https://www.elastic.co/) herunterladen und gemäß der offiziellen Dokumentation installieren und konfigurieren.

  1. Installieren Sie den Elasticsearch PHP-Client

Die Verwendung von Composer zum Verwalten von PHP-Abhängigkeiten ist eine gute Möglichkeit. Wir können den Elasticsearch PHP-Client über Composer installieren.

Erstellen Sie eine Composer.json-Datei im Stammverzeichnis des Projekts und fügen Sie den folgenden Inhalt hinzu:

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

Dann verwenden Sie Composer, um die Abhängigkeiten zu installieren:

composer install
  1. Mit Elasticsearch verbinden

Im Code müssen wir zuerst Folgendes tun Stellen Sie eine Verbindung zum Elasticsearch-Server her. Dies kann einfach mit der ElasticsearchClient-Klasse erreicht werden, die vom Elasticsearch-PHP-Client bereitgestellt wird.

require 'vendor/autoload.php';

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

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

Im obigen Code haben wir den Hostnamen, die Portnummer und das Protokoll des Elasticsearch-Servers angegeben. Es kann je nach Bedarf entsprechend der tatsächlichen Situation geändert werden.

  1. Indizes und Zuordnungen erstellen

In Elasticsearch werden Daten in Form von Indizes gespeichert. Wir müssen zuerst den Index erstellen und den Datentyp und die Zuordnungsbeziehung jedes Felds angeben.

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

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

Im obigen Code haben wir einen Index mit dem Namen „Daten“ erstellt und das Feld „Zeitstempel“ als Datumstyp, das Feld „Nachricht“ als Texttyp und das Feld „Status“ als Schlüsselworttyp angegeben.

  1. Datenbereinigung und -archivierung

Im Datenbereinigungs- und -archivierungsprozess können wir die von Elasticsearch bereitgestellte Abfrage- und Indexierungs-API verwenden, um dies zu erreichen.

Zum Beispiel können wir die Abfrageanweisung query_string verwenden, um die Daten zu filtern, die bereinigt und archiviert werden müssen:

$params = [
    'index' => 'raw_data',
    'body' => [
        'query' => [
            'query_string' => [
                'query' => 'status:success AND timestamp:[now-1h TO now]',
            ],
        ],
    ],
];

$response = $client->search($params);

Im obigen Code verwenden wir die Abfrageanweisung query_string, um Daten mit dem Status „Erfolg“ und herauszufiltern ein Zeitstempel innerhalb der letzten Stunde. Je nach tatsächlichem Bedarf können die Abfragebedingungen nach Bedarf geändert werden.

Dann können wir die Massenindex-API verwenden, um die bereinigten Daten im angegebenen Index zu archivieren:

$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);

Im obigen Code verwenden wir die Massenindex-API, um Stapelindizierungsvorgänge für die zu archivierenden Daten durchzuführen.

  1. Geplante Aufgaben

Um eine Datenbereinigung und -archivierung in Echtzeit zu erreichen, können wir geplante Aufgaben verwenden, um den Datenverarbeitungsprozess regelmäßig durchzuführen. In Linux-Systemen können wir cron verwenden, um geplante Aufgaben einzurichten.

Zum Beispiel können wir ein PHP-Skript mit dem Namen „clean.php“ erstellen, das den Code für die Datenbereinigung und -archivierung enthält, und es mit cron so einstellen, dass es stündlich ausgeführt wird:

0 * * * * php /path/to/clean.php

Im obigen Code „0 “ bedeutet, dass es stündlich bei 0 Minuten ausgeführt wird.

Zusammenfassend lässt sich sagen, dass wir PHP und Elasticsearch verwenden können, um Methoden zur Datenbereinigung und -archivierung in Echtzeit zu implementieren. Durch die Verbindung mit dem Elasticsearch-Server, die Erstellung von Indizes und Zuordnungen, die Verwendung von Abfrage- und Index-APIs für die Datenverarbeitung und die Verwendung geplanter Aufgaben zur regelmäßigen Durchführung von Datenverarbeitungsprozessen können große Mengen an Echtzeitdaten effizient bereinigt und archiviert werden.

Das obige ist der detaillierte Inhalt vonMethode zur Datenbereinigung und -archivierung in Echtzeit mit Elasticsearch in PHP. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn