


Verwendung von PHP und Elasticsearch zur Implementierung der geografischen Standortsuche
So verwenden Sie PHP und Elasticsearch zur Implementierung der geografischen Standortsuche
Mit der rasanten Entwicklung des Internets ist die geografische Standortsuche in den letzten Jahren in verschiedenen Anwendungen immer häufiger geworden. Egal, ob Sie auf einer E-Commerce-Website nach Unternehmen in der Nähe suchen oder in sozialen Medien Freunde in der Nähe finden, die Suche nach geografischen Standorten spielt eine wichtige Rolle. In diesem Artikel untersuchen wir, wie die Geolokalisierungssuche mit PHP und Elasticsearch implementiert wird, und stellen relevante Codebeispiele bereit.
- Elasticsearch installieren und konfigurieren
Zuerst müssen wir Elasticsearch installieren und konfigurieren. Elasticsearch kann von der offiziellen Website heruntergeladen und installiert werden. Nach Abschluss der Installation müssen wir einige wichtige Parameter in der Konfigurationsdatei festlegen, z. B. den HTTP-Port und den Datenspeicherpfad. Die Konfigurationsdatei befindet sich normalerweise unter /etc/elasticsearch/elasticsearch.yml
. Wenn Sie die Standardkonfiguration verwenden, können Sie diesen Schritt überspringen. /etc/elasticsearch/elasticsearch.yml
。如果使用默认配置,则可以跳过该步骤。
- 安装Elasticsearch客户端库
我们需要安装Elasticsearch的PHP客户端库,以便与Elasticsearch进行交互。可以使用Composer来管理依赖关系。在项目根目录下创建一个composer.json
文件,并添加以下内容:
{ "require": { "elasticsearch/elasticsearch": "~7.0" } }
然后在终端中使用以下命令来安装依赖:
composer install
- 创建地理位置索引
接下来,我们需要创建一个地理位置索引,以便存储位置数据。我们将使用Elasticsearch提供的REST API来创建索引。以下是一个示例代码片段:
<?php require 'vendor/autoload.php'; $client = new ElasticsearchClient(); $params = [ 'index' => 'locations', 'body' => [ 'mappings' => [ 'properties' => [ 'location' => [ 'type' => 'geo_point' ] ] ] ] ]; $response = $client->indices()->create($params); print_r($response);
在上面的代码中,我们使用Elasticsearch提供的Client类来与Elasticsearch进行通信。我们通过指定索引名称和映射(mapping)来创建一个新的索引。我们使用geo_point
类型来定义地理位置字段。
- 添加地理位置数据
现在,我们可以添加一些地理位置数据到我们的索引中。以下是一个添加数据的示例代码:
<?php require 'vendor/autoload.php'; $client = new ElasticsearchClient(); $params = [ 'index' => 'locations', 'body' => [ 'location' => [ 'lat' => 40.712776, 'lon' => -74.005974 ] ] ]; $response = $client->index($params); print_r($response);
在上面的代码中,我们使用index
方法来添加一条新的文档。我们指定了索引名称,并提供了一个包含经纬度信息的地理位置字段。
- 执行地理位置搜索
最后,我们可以执行地理位置搜索。以下是一个搜索附近位置的示例代码:
<?php require 'vendor/autoload.php'; $client = new ElasticsearchClient(); $params = [ 'index' => 'locations', 'body' => [ 'query' => [ 'bool' => [ 'must' => [ 'match_all' => [] ], 'filter' => [ 'geo_distance' => [ 'distance' => '10km', 'location' => [ 'lat' => 40.712776, 'lon' => -74.005974 ] ] ] ] ] ] ]; $response = $client->search($params); print_r($response);
在上面的代码中,我们使用search
方法来执行搜索操作。我们使用bool
查询来组合多个查询条件。在这种情况下,我们使用了一个match_all
查询来返回所有文档,并使用geo_distance
查询来过滤10km
- Installieren Sie die Elasticsearch-Clientbibliothek
Wir müssen die PHP-Clientbibliothek von Elasticsearch installieren, um mit Elasticsearch interagieren zu können. Sie können Composer zum Verwalten von Abhängigkeiten verwenden. Erstellen Sie eine composer.json
-Datei im Stammverzeichnis des Projekts und fügen Sie den folgenden Inhalt hinzu:
- 🎜 Geolocation-Index erstellen 🎜🎜🎜 Als nächstes müssen wir einen Geolocation-Index erstellen, um Standortdaten zu speichern. Wir werden die von Elasticsearch bereitgestellte REST-API verwenden, um den Index zu erstellen. Hier ist ein Beispiel-Codeausschnitt: 🎜rrreee🎜 Im obigen Code verwenden wir die von Elasticsearch bereitgestellte Client-Klasse, um mit Elasticsearch zu kommunizieren. Wir erstellen einen neuen Index, indem wir den Indexnamen und die Zuordnung angeben. Wir verwenden den Typ
geo_point
, um das Feld für den geografischen Standort zu definieren. 🎜- 🎜Geolokationsdaten hinzufügen🎜🎜🎜Jetzt können wir einige Geolokalisierungsdaten zu unserem Index hinzufügen. Das Folgende ist ein Beispielcode zum Hinzufügen von Daten: 🎜rrreee🎜Im obigen Code verwenden wir die Methode
index
, um ein neues Dokument hinzuzufügen. Wir haben den Indexnamen angegeben und ein Geolocation-Feld mit Informationen zum Breiten- und Längengrad bereitgestellt. 🎜- 🎜Führen Sie eine Geolokalisierungssuche durch🎜🎜🎜Abschließend können wir eine Geolokalisierungssuche durchführen. Hier ist ein Beispielcode für die Suche nach Orten in der Nähe: 🎜rrreee🎜Im obigen Code verwenden wir die Methode
search
, um den Suchvorgang durchzuführen. Wir verwenden bool
-Abfragen, um mehrere Abfragebedingungen zu kombinieren. In diesem Fall haben wir eine match_all
-Abfrage verwendet, um alle Dokumente zurückzugeben, und eine geo_distance
-Abfrage, um Standorte innerhalb von 10 km
zu filtern. 🎜🎜Zusammenfassung🎜🎜Durch die Verwendung von PHP und Elasticsearch können wir die geografische Standortsuche einfach implementieren. Wir können die von Elasticsearch bereitgestellte REST-API verwenden, um Indizes zu erstellen, Daten hinzuzufügen und Suchvorgänge durchzuführen. Durch den sinnvollen Einsatz von Abfragebedingungen können wir effiziente Suchfunktionen für geografische Standorte erreichen. Ich hoffe, dieser Artikel kann Ihnen helfen zu verstehen, wie Sie PHP und Elasticsearch zur Implementierung der geografischen Standortsuche verwenden, und eine Orientierungshilfe für Ihr Projekt bereitstellen. 🎜Das obige ist der detaillierte Inhalt vonVerwendung von PHP und Elasticsearch zur Implementierung der geografischen Standortsuche. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

In diesem Kapitel werden wir die Umgebungsvariablen, die allgemeine Konfiguration, die Datenbankkonfiguration und die E-Mail-Konfiguration in CakePHP verstehen.

PHP 8.4 bringt mehrere neue Funktionen, Sicherheitsverbesserungen und Leistungsverbesserungen mit einer beträchtlichen Menge an veralteten und entfernten Funktionen. In dieser Anleitung wird erklärt, wie Sie PHP 8.4 installieren oder auf PHP 8.4 auf Ubuntu, Debian oder deren Derivaten aktualisieren. Obwohl es möglich ist, PHP aus dem Quellcode zu kompilieren, ist die Installation aus einem APT-Repository wie unten erläutert oft schneller und sicherer, da diese Repositorys in Zukunft die neuesten Fehlerbehebungen und Sicherheitsupdates bereitstellen.

Um in cakephp4 mit Datum und Uhrzeit zu arbeiten, verwenden wir die verfügbare FrozenTime-Klasse.

Um am Datei-Upload zu arbeiten, verwenden wir den Formular-Helfer. Hier ist ein Beispiel für den Datei-Upload.

In diesem Kapitel lernen wir die folgenden Themen im Zusammenhang mit dem Routing kennen.

CakePHP ist ein Open-Source-Framework für PHP. Es soll die Entwicklung, Bereitstellung und Wartung von Anwendungen erheblich vereinfachen. CakePHP basiert auf einer MVC-ähnlichen Architektur, die sowohl leistungsstark als auch leicht zu verstehen ist. Modelle, Ansichten und Controller gu

Visual Studio Code, auch bekannt als VS Code, ist ein kostenloser Quellcode-Editor – oder eine integrierte Entwicklungsumgebung (IDE) –, die für alle gängigen Betriebssysteme verfügbar ist. Mit einer großen Sammlung von Erweiterungen für viele Programmiersprachen kann VS Code c

Der Validator kann durch Hinzufügen der folgenden zwei Zeilen im Controller erstellt werden.
