Heim  >  Artikel  >  Backend-Entwicklung  >  Verwendung von Elasticsearch für die geografische Standortsuche in PHP

Verwendung von Elasticsearch für die geografische Standortsuche in PHP

WBOY
WBOYOriginal
2023-07-07 14:06:10573Durchsuche

Verwenden von Elasticsearch in PHP für die Suche nach geografischen Standorten

Zusammenfassung: In diesem Artikel wird erläutert, wie Sie PHP und Elasticsearch verwenden, um die Suchfunktion für geografische Standorte zu implementieren. Wir erklären Ihnen, wie Sie Elasticsearch konfigurieren, Geolocation-Daten indizieren, Geolocation-Suchen durchführen und entsprechende PHP-Codebeispiele bereitstellen.

1. Vorbereitung

Bevor wir beginnen, müssen wir sicherstellen, dass PHP und Elasticsearch installiert und konfiguriert sind. Befolgen Sie dazu die folgenden Schritte:

  1. PHP herunterladen und installieren: Besuchen Sie [https://www.php.net/downloads.php](https://www.php.net/downloads.php) zum Herunterladen und befolgen Sie die Anweisungen. Installieren Sie die für Ihr Betriebssystem geeignete Version.
  2. Elasticsearch herunterladen und installieren: Besuchen Sie [https://www.elastic.co/downloads/elasticsearch](https://www.elastic.co/downloads/elasticsearch), um die entsprechende Version herunterzuladen und den Anweisungen zur Installation zu folgen. 2. Elasticsearch konfigurieren Erstellen Sie einen Index mit dem Namen „Standorte“:
  3. elasticsearch
3. Indexieren Sie geografische Standortdaten

3.1 Erstellen Sie eine geografische Standortzuordnung:

Erstellen Sie eine Karte mit dem Namen „Standort“, die Längen- und Breitengradinformationen enthält. Geben Sie den folgenden Befehl in die Befehlszeile ein:

curl -XPUT 'http://localhost:9200/locations'

3.2 Geolocation-Daten indizieren:

Erstellen Sie ein Dokument mit den folgenden Beispieldaten und indizieren Sie es im Index „Standorte“:

curl -XPUT 'http://localhost:9200/locations/_mapping' -H 'Content-Type: application/json' -d '
{
  "properties": {
    "location": {
      "type": "geo_point"
    }
  }
}'

4. Führen Sie eine Geolocation-Suche durch

4.1 Erstellen Geolocation-Suchabfrage:

Verwenden Sie den folgenden Beispielcode, um eine Geolocation-Suchabfrage zu erstellen:

<?php

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

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

$params = [
    'index' => 'locations',
    'type' => 'location',
    'id' => '1',
    'body' => [
        'location' => [
            'lat' => 37.7749,
            'lon' => -122.4194
        ]
    ]
];

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

print_r($response);

Im obigen Beispiel haben wir den Filter „geo_distance“ verwendet, um eine Geolocation-Suche durchzuführen, den Suchradius auf 100 km festgelegt und den Breitengrad angegeben und Längengrad des Zentrumsstandorts.

4.2 Suchergebnisse abrufen:

Erhalten Sie die Liste der passenden Dokumente basierend auf dem Feld „Treffer“ in den Suchergebnissen:

<?php

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

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

$params = [
    'index' => 'locations',
    'type' => 'location',
    'body' => [
        'query' => [
            'bool' => [
                'must' => [
                    'match_all' => (object) []
                ],
                'filter' => [
                    'geo_distance' => [
                        'distance' => '100km',
                        'location' => [
                            'lat' => 37.7749,
                            'lon' => -122.4194
                        ]
                    ]
                ]
            ]
        ]
    ]
];

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

print_r($response);

Der obige Code druckt die Liste der passenden Dokumente der Suchergebnisse aus.

Fazit

Durch die oben genannten Schritte haben wir Elasticsearch erfolgreich konfiguriert, geografische Standortdaten indiziert und die Suchfunktion für geografische Standorte implementiert. Der Code kann je nach tatsächlichem Bedarf weiter erweitert und optimiert werden, um komplexere Abfrageanforderungen zu erfüllen.

Referenzmaterialien:

Offizielle Dokumentation von Elasticsearch: [https://www.elastic.co/guide/en/elasticsearch/reference/current/index.html](https://www.elastic.co/guide/ en/elasticsearch/reference/current/index.html)

Elasticsearch PHP-Client-Dokumentation: [https://www.elastic.co/guide/en/elasticsearch/client/php-api/current/index.html]( https ://www.elastic.co/guide/en/elasticsearch/client/php-api/current/index.html)

Das obige ist der detaillierte Inhalt vonVerwendung von Elasticsearch für die geografische Standortsuche 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