>  기사  >  백엔드 개발  >  Elasticsearch를 사용하여 PHP 개발에서 검색 기능을 구현하는 방법

Elasticsearch를 사용하여 PHP 개발에서 검색 기능을 구현하는 방법

WBOY
WBOY원래의
2023-06-27 12:59:201497검색

인터넷이 발달하면서 검색엔진의 중요성이 더욱 부각되고 있습니다. 검색엔진은 관련 콘텐츠를 빠르게 검색할 수 있을 뿐만 아니라 효율적이고 안정적이며 확장 가능해야 합니다. 널리 사용되는 분산 검색 엔진인 Elasticsearch는 검색 분야에서 많은 기업이 가장 먼저 선택하는 요소가 되었습니다. 이 기사에서는 PHP 개발을 사용하고 Elasticsearch와 결합하여 검색 기능을 구현하는 방법을 소개합니다.

  1. Elasticsearch 설치

시작하기 전에 먼저 Elasticsearch를 설치해야 합니다. Elasticsearch는 Java 애플리케이션이므로 먼저 Java를 설치하고 Elasticsearch 압축 파일을 다운로드해야 합니다. 그런 다음 지정된 디렉터리에 파일의 압축을 풉니다.

  1. 색인 만들기

색인 만들기는 Elasticsearch에서 검색하려는 문서를 저장하는 첫 번째 단계입니다. 일반적으로 인덱스는 일련의 문서(데이터 행)로 구성된 데이터베이스의 테이블로 생각할 수 있습니다.

PHP에서는 Elasticsearch-PHP 클라이언트를 사용하여 Elasticsearch와 상호 작용할 수 있습니다. Elasticsearch-PHP 패키지를 먼저 설치해야 합니다.

composer require elasticsearch/elasticsearch

다음은 인덱스를 생성하는 샘플 코드입니다.

require 'vendor/autoload.php';

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

$params = [
    'index' => 'my_index',
    'body' => [
        'settings' => [
            'number_of_shards' => 1,
            'number_of_replicas' => 0,
        ],
        'mappings' => [
            'my_type' => [
                'properties' => [
                    'title' => [
                        'type' => 'text'
                    ],
                    'content' => [
                        'type' => 'text'
                    ],
                    'post_date' => [
                        'type' => 'date',
                        'format' => 'yyyy-MM-dd HH:mm:ss'
                    ]
                ]
            ]
        ]
    ]
];

$response = $client->indices()->create($params);

위 코드에서는 "my_index"라는 인덱스를 생성하고 "my_type" 유형이라는 인덱스입니다. "my_type" 유형 아래에 title, content 및 post_date라는 세 가지 필드를 정의했습니다.

  1. 색인에 문서 추가

색인을 만든 후에는 검색 시 관련 결과를 반환할 문서를 색인에 추가해야 합니다.

예를 들어 "PHP 개발 실습"이라는 기사를 추가합니다.

$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'id' => '1',
    'body' => [
        'title' => 'PHP开发实战',
        'content' => '本文介绍如何在PHP中使用Elasticsearch实现搜索功能。',
        'post_date' => date('Y-m-d H:i:s')
    ]
];

$response = $client->index($params);
  1. 데이터 검색

검색은 Elasticsearch의 가장 기본적이고 일반적으로 사용되는 기능 중 하나입니다. Elasticsearch는 다음을 포함한 다양한 쿼리 방법을 지원합니다.

  • 단순 문자열 쿼리
  • 복합 쿼리
  • 범위 쿼리
  • 정규 표현식 쿼리
  • 퍼지 쿼리
  • 집계 쿼리 등
  • 다음은 다음과 같습니다. 텍스트 및 날짜 범위 조건을 활용하는 간단한 검색 예:
$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'body' => [
        'query' => [
            'bool' => [
                'must' => [
                    [
                        'match' => [
                            'title' => 'PHP'
                        ]
                    ],
                    [
                        'range' => [
                            'post_date' => [
                                'gte' => '2021-01-01 00:00:00',
                                'lte' => '2021-01-31 23:59:59'
                            ]
                        ]
                    ]
                ]
            ]
        ]
    ]
];

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

위 코드에서는 "일치" 및 "범위" 쿼리를 사용하여 제목에 "PHP"가 포함되고 2021년에 출판된 기사를 검색합니다. 1 이내 결과 월.

결과 처리
  1. 마지막으로 검색 결과를 PHP로 반환하고 사용자에게 최종 프레젠테이션을 위해 처리해야 합니다.
$hits = $response['hits']['hits'];
foreach ($hits as $hit) {
    echo $hit['_source']['title'] . "
";
    echo $hit['_source']['content'] . "
";
    echo $hit['_source']['post_date'] . "
";
}

위 코드에서는 검색 결과 세트의 각 문서를 순회하여 문서의 제목, 내용, 발행 날짜를 출력합니다.

요약

이 글에서는 Elasticsearch와 결합된 PHP를 사용하여 검색 기능을 구현하는 방법을 소개합니다. 이 기사를 공부하면 색인 생성, 문서 추가, 데이터 검색 및 결과 처리와 같은 기본 작업에 대해 배울 수 있습니다. 물론 Elasticsearch에는 집계 쿼리, 강조 표시, 정렬 등과 ​​같은 많은 사용 기술도 있습니다. 이러한 기술은 Elasticsearch를 사용하여 검색 기능을 더 잘 구현하는 데 도움이 될 수 있습니다.

위 내용은 Elasticsearch를 사용하여 PHP 개발에서 검색 기능을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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