Heim >Backend-Entwicklung >PHP-Tutorial >So verwenden Sie Elasticsearch zur Implementierung von Suchfunktionen in der PHP-Entwicklung

So verwenden Sie Elasticsearch zur Implementierung von Suchfunktionen in der PHP-Entwicklung

WBOY
WBOYOriginal
2023-06-27 12:59:201522Durchsuche

Mit der Entwicklung des Internets hat die Bedeutung von Suchmaschinen immer mehr an Bedeutung gewonnen. Suchmaschinen müssen nicht nur in der Lage sein, schnell nach relevanten Inhalten zu suchen, sondern auch effizient, stabil und skalierbar zu sein. Als beliebte verteilte Suchmaschine ist Elasticsearch für viele Unternehmen zur ersten Wahl im Suchbereich geworden. In diesem Artikel wird erläutert, wie Sie die PHP-Entwicklung verwenden und mit Elasticsearch kombinieren, um Suchfunktionen zu implementieren.

  1. Elasticsearch installieren

Bevor wir beginnen, müssen wir zuerst Elasticsearch installieren. Elasticsearch ist eine Java-Anwendung, daher müssen wir zuerst Java installieren und die komprimierte Datei von Elasticsearch herunterladen. Entpacken Sie dann die Datei in das angegebene Verzeichnis.

  1. Erstellen Sie einen Index

Das Erstellen eines Index ist der erste Schritt beim Speichern der Dokumente, die wir in Elasticsearch durchsuchen möchten. Normalerweise können wir uns einen Index als eine Tabelle in einer Datenbank vorstellen, die aus einer Reihe von Dokumenten (Datenzeilen) besteht.

In PHP können wir den Elasticsearch-PHP-Client verwenden, um mit Elasticsearch zu interagieren. Sie müssen zuerst das Elasticsearch-PHP-Paket installieren:

Composer erfordert Elasticsearch/Elasticsearch

Das Folgende ist ein Beispielcode zum Erstellen eines Index:

require 'vendor/autoload.php';

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

$params = [
    'index' => 'my_index',
    'body' => [
        'settings' => [
            'number_of_shards' => 1,
            'number_of_replicas' => 0,
        ],
        'mappings' => [
            'my_type' => [
                'properties' => [
                    'title' => [
                        'type' => 'text'
                    ],
                    'content' => [
                        'type' => 'text'
                    ],
                    'post_date' => [
                        'type' => 'date',
                        'format' => 'yyyy-MM-dd HH:mm:ss'
                    ]
                ]
            ]
        ]
    ]
];

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

Im obigen Code erstellen wir einen Index mit dem Namen „my_index“ und definieren einen Index mit dem Namen „my_type“ Typ. Wir haben drei Felder unter dem Typ „my_type“ definiert: Titel, Inhalt und Post_Datum.

  1. Dokumente zum Index hinzufügen

Nachdem wir den Index erstellt haben, müssen wir Dokumente zum Index hinzufügen, die bei der Suche relevante Ergebnisse liefern.

Zum Beispiel fügen wir einen Artikel mit dem Titel „PHP-Entwicklungspraxis“ hinzu:

$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'id' => '1',
    'body' => [
        'title' => 'PHP开发实战',
        'content' => '本文介绍如何在PHP中使用Elasticsearch实现搜索功能。',
        'post_date' => date('Y-m-d H:i:s')
    ]
];

$response = $client->index($params);
  1. Daten durchsuchen

Die Suche ist eine der grundlegendsten und am häufigsten verwendeten Funktionen von Elasticsearch. Elasticsearch unterstützt eine Vielzahl von Abfragemethoden, darunter:

  • Einfache Zeichenfolgenabfrage
  • Zusammengesetzte Abfrage
  • Bereichsabfrage
  • Abfrage nach genauen Werten
  • Abfrage mit regulären Ausdrücken
  • Fuzzy-Abfrage
  • Aggregationsabfrage und mehr

Das Folgende ist Ein einfaches Suchbeispiel, das Text- und Datumsbereichsbedingungen verwendet:

$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'body' => [
        'query' => [
            'bool' => [
                'must' => [
                    [
                        'match' => [
                            'title' => 'PHP'
                        ]
                    ],
                    [
                        'range' => [
                            'post_date' => [
                                'gte' => '2021-01-01 00:00:00',
                                'lte' => '2021-01-31 23:59:59'
                            ]
                        ]
                    ]
                ]
            ]
        ]
    ]
];

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

Im obigen Code verwenden wir „Match“- und „Range“-Abfragen, um nach Artikeln zu suchen, die „PHP“ im Titel enthalten und in den Ergebnissen 2021 innerhalb von 1 veröffentlicht werden Monat.

  1. Ergebnisverarbeitung

Schließlich müssen wir die Suchergebnisse an PHP zurückgeben und sie für die endgültige Präsentation für den Benutzer verarbeiten.

$hits = $response['hits']['hits'];
foreach ($hits as $hit) {
    echo $hit['_source']['title'] . "
";
    echo $hit['_source']['content'] . "
";
    echo $hit['_source']['post_date'] . "
";
}

Im obigen Code durchlaufen wir jedes Dokument im Suchergebnissatz und geben den Titel, den Inhalt und das Veröffentlichungsdatum des Dokuments aus.

Zusammenfassung

Dieser Artikel stellt vor, wie man PHP in Kombination mit Elasticsearch verwendet, um Suchfunktionen zu implementieren. Durch das Studium dieses Artikels erfahren Sie mehr über grundlegende Vorgänge wie das Erstellen von Indizes, das Hinzufügen von Dokumenten, das Durchsuchen von Daten und das Verarbeiten von Ergebnissen. Natürlich verfügt Elasticsearch auch über viele Verwendungstechniken wie Aggregationsabfrage, Hervorhebung, Sortierung usw. Diese Techniken können uns dabei helfen, Elasticsearch besser für die Implementierung von Suchfunktionen zu nutzen.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Elasticsearch zur Implementierung von Suchfunktionen in der PHP-Entwicklung. 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