Heim  >  Artikel  >  Backend-Entwicklung  >  So implementieren Sie die Suche nach mehreren Bedingungen mit PHP und Elasticsearch

So implementieren Sie die Suche nach mehreren Bedingungen mit PHP und Elasticsearch

WBOY
WBOYOriginal
2023-07-18 21:12:251175Durchsuche

So implementieren Sie die Suche mit mehreren Bedingungen mit PHP und Elasticsearch

Einführung:
In der Webentwicklung ist die Suchfunktion ein unverzichtbarer Bestandteil. Um genauere und flexiblere Suchergebnisse bereitzustellen, müssen wir normalerweise eine Suche mit mehreren Bedingungen implementieren. In diesem Artikel wird erläutert, wie Sie mit PHP und Elasticsearch eine Suche mit mehreren Bedingungen implementieren. Wir stellen die Grundkonzepte von Elasticsearch vor und geben Codebeispiele, die Ihnen helfen, diesen Prozess zu verstehen und zu üben.

Teil Eins: Überblick über Elasticsearch
Elasticsearch ist eine verteilte Open-Source-Such- und Analysemaschine, die große Datenmengen schnell speichern, durchsuchen und analysieren kann. Durch den Einsatz von Elasticsearch können wir leistungsstarke Suchfunktionen einfach implementieren und leistungsstarke Suchergebnisse bereitstellen.

Teil 2: Indizierung
Vor der Suche müssen wir die Daten zunächst indizieren. Ein Index ist eine Sammlung von Dokumenten, die jeweils aus einer Reihe von Feldern bestehen. In diesem Beispiel verwenden wir einen Index namens „products“, um Produktinformationen zu speichern.

Der PHP-Code zum Erstellen des Index sieht so aus:

require 'vendor/autoload.php';

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

$params = [
    'index' => 'products',
    'body' => [
        'settings' => [
            'number_of_shards' => 1,
            'number_of_replicas' => 0
        ],
        'mappings' => [
            'properties' => [
                'name' => [
                    'type' => 'text',
                    'analyzer' => 'ik_max_word',
                ],
                'price' => [
                    'type' => 'integer'
                ],
                'category' => [
                    'type' => 'keyword'
                ]
            ]
        ]
    ]
];

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

Im obigen Code haben wir die PHP-Client-Bibliothek von Elasticsearch verwendet. Zuerst richten wir eine neue Client-Instanz ein. Anschließend definieren wir die Einstellungen und Zuordnungsinformationen für den Index und erstellen den Index durch Aufrufen der Methode indices()->create(). indices()->create()方法来创建索引。

第三部分:添加文档
在建立索引后,我们需要将实际的数据添加到Elasticsearch中。以下是一个添加产品文档的示例代码:

$params = [
    'index' => 'products',
    'body' => [
        'name' => 'iPhone 12',
        'price' => 9999,
        'category' => '手机'
    ]
];

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

在这段代码中,我们指定了索引名称和要添加的文档。我们只需将文档的字段和对应的值传递给index()方法即可。

第四部分:进行多条件搜索
一旦数据成功添加到Elasticsearch中,我们就可以开始进行多条件搜索。以下是一个使用PHP和Elasticsearch进行多条件搜索的示例代码:

$params = [
    'index' => 'products',
    'body' => [
        'query' => [
            'bool' => [
                'must' => [
                    ['match' => ['name' => 'iPhone']],
                    ['range' => ['price' => ['gte' => 5000]]],
                    ['term' => ['category' => '手机']]
                ]
            ]
        ]
    ]
];

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

$results = $response['hits']['hits'];

在这个示例代码中,我们首先创建了一个查询结构,通过matchrangeterm来定义了多个查询条件。然后,我们通过search()方法将查询参数传递给Elasticsearch,并获取搜索结果。

最后,我们将搜索结果存储在$results

Teil drei: Dokumente hinzufügen

Nach der Indizierung müssen wir die tatsächlichen Daten zu Elasticsearch hinzufügen. Hier ist ein Beispielcode zum Hinzufügen eines Produktdokuments:
rrreee

In diesem Code geben wir den Indexnamen und das hinzuzufügende Dokument an. Wir müssen lediglich die Felder des Dokuments und die entsprechenden Werte an die Methode index() übergeben. 🎜🎜Teil 4: Führen Sie eine Suche nach mehreren Kriterien durch🎜Sobald die Daten erfolgreich zu Elasticsearch hinzugefügt wurden, können wir mit der Durchführung einer Suche nach mehreren Kriterien beginnen. Das Folgende ist ein Beispielcode für die Suche mit mehreren Bedingungen mit PHP und Elasticsearch: 🎜rrreee🎜 In diesem Beispielcode erstellen wir zunächst eine Abfragestruktur durch match, range und term, um mehrere Abfragebedingungen zu definieren. Anschließend übergeben wir die Abfrageparameter über die Methode search() an Elasticsearch und erhalten die Suchergebnisse. 🎜🎜Abschließend speichern wir die Suchergebnisse im Array $results, das bei Bedarf weiterverarbeitet und angezeigt werden kann. 🎜🎜Fazit: 🎜Durch die Verwendung von PHP und Elasticsearch können wir Suchfunktionen mit mehreren Bedingungen implementieren, um Benutzern genauere und flexiblere Suchergebnisse bereitzustellen. In diesem Artikel haben wir die Grundkonzepte von Elasticsearch vorgestellt und anhand von Codebeispielen gezeigt, wie man indiziert, Dokumente hinzufügt und Suchen nach mehreren Kriterien durchführt. Ich hoffe, dass dieser Artikel Ihnen einige nützliche Informationen und Anleitungen liefern kann, damit Sie die Multikriterien-Suchtechnologie besser verstehen und anwenden können. 🎜

Das obige ist der detaillierte Inhalt vonSo implementieren Sie die Suche nach mehreren Bedingungen mit PHP und Elasticsearch. 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