>  기사  >  백엔드 개발  >  PHP에서 지리적 위치 검색을 위해 Elasticsearch 사용

PHP에서 지리적 위치 검색을 위해 Elasticsearch 사용

WBOY
WBOY원래의
2023-07-07 14:06:10613검색

지리적 위치 검색을 위해 PHP에서 Elasticsearch 사용

요약: 이 기사에서는 PHP와 Elasticsearch를 사용하여 지리적 위치 검색 기능을 구현하는 방법을 소개합니다. Elasticsearch를 구성하는 방법, 지리적 위치 데이터를 색인화하는 방법, 지리적 위치 검색을 수행하는 방법 및 해당 PHP 코드 예제를 제공하는 방법을 살펴보겠습니다.

1. 준비

시작하기 전에 PHP와 Elasticsearch가 설치 및 구성되었는지 확인해야 합니다. 다음 단계에 따라 완료할 수 있습니다.

  1. PHP 다운로드 및 설치: [https://www.php.net/downloads.php](https://www.php.net/downloads.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" 필터를 사용하여 위치정보 검색을 수행하고 검색 반경을 100km로 설정하고 위도를 지정했습니다. 및 중심 위치의 경도입니다.

4.2 검색 결과 가져오기:

검색 결과의 "hits" 필드를 기반으로 일치하는 문서 목록 가져오기:

<?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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.