>백엔드 개발 >PHP 튜토리얼 >PHP와 Elasticsearch를 사용하여 실시간에 가까운 검색을 구현하는 방법

PHP와 Elasticsearch를 사용하여 실시간에 가까운 검색을 구현하는 방법

王林
王林원래의
2023-07-18 22:51:27868검색

PHP 및 Elasticsearch를 사용하여 실시간에 가까운 검색을 달성하는 방법

검색 기능은 최신 웹 애플리케이션의 중요한 부분입니다. 많은 양의 데이터와 여러 사용자의 동시 검색을 처리할 때 기존의 데이터베이스 쿼리 방법은 더 이상 요구 사항을 충족할 수 없습니다. Elasticsearch는 대규모 데이터를 빠르게 처리하고 고성능, 고가용성을 제공할 수 있는 오픈소스 분산 검색 및 분석 엔진입니다. 이 기사에서는 PHP와 Elasticsearch를 사용하여 거의 실시간 검색 기능을 구현하는 방법을 소개합니다.

  1. Elasticsearch 및 PHP 클라이언트 설치

먼저 서버에 Elasticsearch를 설치해야 합니다. 공식 홈페이지(https://www.elastic.co/downloads/elasticsearch)에서 최신 버전의 설치 패키지를 다운로드한 후, 공식 문서에 따라 설치 및 구성하시면 됩니다.

그런 다음 PHP용 Elasticsearch 클라이언트 라이브러리를 설치해야 합니다. Composer를 사용하여 설치하고 다음 명령을 실행할 수 있습니다.

composer require elasticsearch/elasticsearch
  1. Connect to Elasticsearch

PHP 코드에서 먼저 Elasticsearch 클라이언트 인스턴스를 생성하고 Elasticsearch 서버에 연결해야 합니다. 다음은 간단한 예입니다.

require 'vendor/autoload.php';

$client = ElasticsearchClientBuilder::create()->build();
  1. 인덱스 및 매핑 생성

검색을 수행하기 전에 먼저 인덱스 및 매핑을 생성해야 합니다. 인덱스는 기존 데이터베이스의 테이블과 유사하게 Elasticsearch에 데이터를 저장하기 위한 논리적 개념입니다.

다음은 인덱스 생성 및 매핑 예시입니다.

$params = [
    'index' => 'my_index',
    'body' => [
        'mappings' => [
            'properties' => [
                'title' => [
                    'type' => 'text',
                ],
                'content' => [
                    'type' => 'text',
                ],
            ],
        ],
    ],
];

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

위 코드에서는 my_index라는 인덱스가 생성되고, 제목content가 생성됩니다. 필드는 매핑을 정의합니다. 실제 필요에 따라 다양한 필드와 매핑 유형을 정의할 수 있습니다. my_index的索引,并为titlecontent字段定义了映射。可以根据实际需求定义不同的字段和映射类型。

  1. 添加文档

在进行搜索之前,需要将数据添加到索引中。下面是一个示例:

$params = [
    'index' => 'my_index',
    'body' => [
        'title' => 'example title',
        'content' => 'example content',
    ],
];

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

以上代码中,将一个包含titlecontent字段的文档添加到索引my_index中。可以根据实际需求添加更多的字段和内容。

  1. 创建搜索查询

最后,可以创建一个搜索查询来执行实际的搜索操作。下面是一个简单的搜索查询示例:

$params = [
    'index' => 'my_index',
    'body' => [
        'query' => [
            'match' => [
                'title' => 'example',
            ],
        ],
    ],
];

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

foreach ($response['hits']['hits'] as $hit) {
    echo $hit['_source']['title'] . "
";
}

以上代码中,执行了一个根据title字段进行匹配的搜索查询,并输出了搜索结果中的title

    문서 추가

    🎜검색하기 전에 색인에 데이터를 추가해야 합니다. 예는 다음과 같습니다. 🎜rrreee🎜위 코드에서 titlecontent 필드가 포함된 문서가 my_index 인덱스에 추가됩니다. 실제 필요에 따라 더 많은 필드와 콘텐츠를 추가할 수 있습니다. 🎜
      🎜검색어 만들기🎜🎜🎜마지막으로 실제 검색 작업을 수행하기 위한 검색어를 만들 수 있습니다. 다음은 간단한 검색어 예시입니다. 🎜rrreee🎜위 코드에서는 제목 필드를 기준으로 검색어가 실행되어 검색결과의 제목이 출력됩니다. . 필드. 🎜🎜요약하자면, PHP와 Elasticsearch를 사용하면 거의 실시간 검색 기능을 쉽게 구현할 수 있습니다. Elasticsearch 설치 및 구성부터 Elasticsearch 연결, 인덱스 및 매핑 생성, 문서 추가, 검색 작업 수행까지의 전체 프로세스를 살펴보았습니다. 이 기사가 PHP와 Elasticsearch를 사용하여 실시간에 가까운 검색 기능을 구현하는 데 도움이 되기를 바랍니다. 🎜

위 내용은 PHP와 Elasticsearch를 사용하여 실시간에 가까운 검색을 구현하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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