ホームページ  >  記事  >  バックエンド開発  >  PHP での地理的位置検索に Elasticsearch を使用する

PHP での地理的位置検索に Elasticsearch を使用する

WBOY
WBOYオリジナル
2023-07-07 14:06:10573ブラウズ

PHP で Elasticsearch を使用して地理的位置検索を行う

要約: この記事では、PHP と Elasticsearch を使用して地理的位置検索機能を実装する方法を紹介します。 Elasticsearch の設定方法、地理位置情報データのインデックス作成方法、地理位置情報検索の実行方法を説明し、対応する PHP コード例を示します。

1. 準備

始める前に、PHP と Elasticsearch がインストールされ、設定されていることを確認する必要があります。これは、次の手順に従って実行できます。

  1. PHP をダウンロードしてインストールします。[https://www.php.net/downloads.php](https://www.php.net/) にアクセスしてください。ダウンロード.php) を参照し、指示に従ってオペレーティング システムに適したバージョンをインストールします。
  2. 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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。