PHP で Elasticsearch を使用して地理的位置検索を行う
要約: この記事では、PHP と Elasticsearch を使用して地理的位置検索機能を実装する方法を紹介します。 Elasticsearch の設定方法、地理位置情報データのインデックス作成方法、地理位置情報検索の実行方法を説明し、対応する PHP コード例を示します。
1. 準備
始める前に、PHP と Elasticsearch がインストールされ、設定されていることを確認する必要があります。これは、次の手順に従って実行できます。
- PHP をダウンロードしてインストールします。[https://www.php.net/downloads.php](https://www.php.net/) にアクセスしてください。ダウンロード.php) を参照し、指示に従ってオペレーティング システムに適したバージョンをインストールします。
- Elasticsearch をダウンロードしてインストールします: [https://www.elastic.co/downloads/elasticsearch](https://www.elastic.co/downloads/elasticsearch) にアクセスして、対応するバージョンをダウンロードしてインストールします。指示に従ってください。
2. Elasticsearch の設定
2.1 Elasticsearch サービスを開始します:
コマンド ラインに次のコマンドを入力して、Elasticsearch サービスを開始します:
elasticsearch
2.2 インデックスの作成 :
コマンド ラインに次のコマンドを入力して、「locations」という名前のインデックスを作成します:
curl -XPUT 'http://localhost:9200/locations'
3. 地理的位置データのインデックスを作成します
3.1地理的位置マッピングの作成:
経度と緯度の情報を含む「location」という名前のマップを作成します。コマンド ラインで次のコマンドを入力します:
curl -XPUT 'http://localhost:9200/locations/_mapping' -H 'Content-Type: application/json' -d ' { "properties": { "location": { "type": "geo_point" } } }'
3.2 地理的位置データのインデックスを作成します:
次のサンプル データを使用してドキュメントを作成し、「場所」インデックスにインデックスを付けます:
<?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);
4. 地理位置検索の実行
4.1 地理位置検索クエリの作成:
次のサンプル コードを使用して地理位置検索クエリを作成します:
<?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);
上記の例たとえば、「geo_ distance」フィルターを使用して地理的位置の検索を実行し、検索半径を 100 km に設定し、中心位置の緯度と経度を指定しました。
4.2 検索結果の取得:
検索結果の「ヒット」フィールドに基づいて一致するドキュメントのリストを取得します:
<?php // ... print_r($response['hits']['hits']);
上記のコードは、一致するドキュメントを出力します。検索結果のリスト。
結論
上記の手順により、Elasticsearch の構成、地理的位置データのインデックス作成、地理的位置検索機能の実装が完了しました。実際のニーズに応じてコードをさらに拡張および最適化し、より複雑なクエリのニーズを満たすことができます。
参考資料:
- 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 クライアント ドキュメント: [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)
以上がPHP での地理的位置検索に Elasticsearch を使用するの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

thesecrettokeepingaphp-poweredwebsterunningsmootlyunderheavyloadinvolvesseveralkeystrategies:1)emform opcodecoduceSciptionexecutiontime、2)aatabasequerycachingwithiThing withiThistolessendavasoload、

コードをより明確かつ維持しやすくするため、依存関係が関心(DI)に注意する必要があります。 1)DIは、クラスを切り離すことにより、よりモジュール化されます。2)テストとコードの柔軟性の利便性を向上させ、3)DIコンテナを使用して複雑な依存関係を管理しますが、パフォーマンスの影響と円形の依存関係に注意してください。

はい、最適化されたAphPossibleandessention.1)CachingingusapCutoredatedAtabaseload.2)最適化、効率的なQueries、およびConnectionPooling.3)EnhcodeCodewithBultinctions、Avoididingglobalbariables、およびUsingopcodeching

keyStrategIestsoSificlyvoostphpappliceperformanceare:1)useopcodecachinglikeToreexecutiontime、2)最適化abaseの相互作用とプロペラインデックス、3)3)構成

aphpDependencyInjectionContaineriSATOULTAINATINAGECLASSDEPTINCIES、強化測定性、テスト可能性、および維持可能性。

SELECT DEPENTENCINGINOFCENT(DI)大規模なアプリケーションの場合、ServicElocatorは小さなプロジェクトまたはプロトタイプに適しています。 1)DIは、コンストラクターインジェクションを通じてコードのテスト可能性とモジュール性を改善します。 2)ServiceLocatorは、センター登録を通じてサービスを取得します。これは便利ですが、コードカップリングの増加につながる可能性があります。

phpapplicationscanbeoptimizedforspeedandEfficiencyby:1)enabingopcacheinphp.ini、2)PreparedStatementswithpordatabasequeriesを使用して、3)LoopswithArray_filterandarray_mapfordataprocessing、4)の構成ngincasaSearverseproxy、5)

PHPemailvalidationinvolvesthreesteps:1)Formatvalidationusingregularexpressionstochecktheemailformat;2)DNSvalidationtoensurethedomainhasavalidMXrecord;3)SMTPvalidation,themostthoroughmethod,whichchecksifthemailboxexistsbyconnectingtotheSMTPserver.Impl


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

MinGW - Minimalist GNU for Windows
このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

DVWA
Damn Vulnerable Web App (DVWA) は、非常に脆弱な PHP/MySQL Web アプリケーションです。その主な目的は、セキュリティ専門家が法的環境でスキルとツールをテストするのに役立ち、Web 開発者が Web アプリケーションを保護するプロセスをより深く理解できるようにし、教師/生徒が教室環境で Web アプリケーションを教え/学習できるようにすることです。安全。 DVWA の目標は、シンプルでわかりやすいインターフェイスを通じて、さまざまな難易度で最も一般的な Web 脆弱性のいくつかを実践することです。このソフトウェアは、

Dreamweaver Mac版
ビジュアル Web 開発ツール

EditPlus 中国語クラック版
サイズが小さく、構文の強調表示、コード プロンプト機能はサポートされていません
