>백엔드 개발 >PHP 튜토리얼 >PHP와 Elasticsearch를 사용하여 실시간 검색 기능을 구축하는 방법

PHP와 Elasticsearch를 사용하여 실시간 검색 기능을 구축하는 방법

WBOY
WBOY원래의
2023-07-18 11:30:20964검색

PHP와 Elasticsearch를 사용하여 실시간 검색 기능을 구축하는 방법

Elasticsearch는 대량의 데이터를 빠르고 효율적으로 검색하고 분석하는 데 사용할 수 있는 오픈 소스 분산 검색 엔진입니다. 그리고 PHP는 웹 개발에 일반적으로 사용되는 인기 있는 스크립팅 언어입니다. 이 기사에서는 PHP와 Elasticsearch를 사용하여 실시간 검색 기능을 구축하는 방법을 소개합니다.

1단계: Elasticsearch 설치 및 구성

먼저 Elasticsearch 서버를 설치해야 합니다. 공식 홈페이지에서 해당 운영체제에 맞는 설치 패키지를 다운로드한 후, 공식 문서에 따라 설치하시면 됩니다. 설치가 완료되면 Elasticsearch 구성 파일 elasticsearch.yml을 수정해야 합니다. 예:

cluster.name: my-cluster

cluster.name을 사용자 지정 클러스터 이름으로 수정합니다.

2단계: 인덱스 및 매핑 생성

Elasticsearch에서 데이터는 하나 이상의 인덱스로 구성됩니다. 각 인덱스에는 여러 유형이 포함되어 있으며 각 유형에는 여러 문서가 포함되어 있습니다. 먼저 인덱스를 생성하고 해당 매핑을 정의해야 합니다.

Elasticsearch의 RESTful API를 사용하여 인덱스와 매핑을 생성할 수 있습니다. 서버의 지정된 엔드포인트에 PUT 요청을 보내 인덱스를 생성합니다.

예를 들어, "products"라는 인덱스를 생성한다고 가정하면 다음 코드를 사용할 수 있습니다.

<?php

$ch = curl_init();

$url = 'http://localhost:9200/products';

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PUT, true);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close($ch);

echo $response;
?>

이 코드는 컬 라이브러리를 사용하여 인덱스의 URL을 지정하여 Elasticsearch 서버에 PUT 요청을 보냅니다. CURLOPT_PUT 옵션을 true로 설정하면 컬 라이브러리에 PUT 요청을 보내도록 지시합니다. 마지막으로, 컬_exec 함수를 실행하여 요청을 보냅니다.

인덱스를 생성하는 방법과 유사하게 PUT 요청을 사용하여 인덱스 매핑을 생성할 수도 있습니다.

3단계: 문서 색인화

색인을 생성하고 매핑을 정의한 후에는 문서를 색인화할 차례입니다. 문서는 Elasticsearch의 기본 단위이며 일련의 필드를 포함하는 JSON 개체입니다.

예를 들어 "product1"이라는 문서를 인덱싱하려는 경우 다음 코드를 사용할 수 있습니다.

<?php

$ch = curl_init();

$url = 'http://localhost:9200/products/product/1';

$data = '{
  "title": "Product 1",
  "description": "This is product 1"
}';

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, 'PUT');
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close($ch);

echo $response;
?>

이 코드는 컬 라이브러리를 사용하여 문서의 URL을 지정하여 Elasticsearch 서버에 PUT 요청을 보냅니다. 문서의 URL은 색인 이름, 유형 및 문서 ID로 구성됩니다. 데이터 부분은 제목 및 설명 필드가 포함된 JSON 문자열입니다.

문서를 인덱싱하는 방법과 유사하게 PUT 요청을 사용하여 문서를 업데이트할 수도 있습니다.

4단계: 문서 검색

문서가 색인화되면 Elasticsearch의 검색 기능을 사용하여 문서를 검색할 수 있습니다.

예를 들어 제목 필드에 "product"라는 키워드가 포함된 문서를 검색하려는 경우 다음 코드를 사용할 수 있습니다.

<?php

$ch = curl_init();

$url = 'http://localhost:9200/products/_search';

$data = '{
  "query": {
    "match": {
      "title": "product"
    }
  }
}';

curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $data);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);

$response = curl_exec($ch);

curl_close($ch);

echo $response;
?>

이 코드는 컬 라이브러리를 사용하여 Elasticsearch 서버에 POST 요청을 보내고 검색 URL. 검색된 URL은 인덱스 이름과 _search로 구성됩니다. 데이터 부분은 쿼리 조건이 포함된 JSON 문자열입니다.

5단계: 검색 결과 처리

필요에 따라 반환된 검색 결과를 추가로 처리할 수 있습니다. 검색 결과는 필요에 따라 구문 분석하고 표시할 수 있는 JSON 형식으로 반환됩니다.

예를 들어 다음 코드를 사용하여 JSON 결과를 구문 분석하고 검색 결과를 표시할 수 있습니다.

<?php

$response = json_decode($response, true);

$hits = $response['hits']['hits'];

foreach ($hits as $hit) {
  $source = $hit['_source'];
  $title = $source['title'];
  $description = $source['description'];

  echo "Title: $title
";
  echo "Description: $description
";
  echo "
";
}
?>

이 코드는 먼저 검색 결과를 연관 배열로 변환한 다음 각 문서의 제목 및 설명 필드를 추출하여 표시합니다. .

위의 단계를 통해 PHP와 Elasticsearch를 사용하여 실시간 검색 기능을 구축할 수 있습니다. Elasticsearch 서버를 구성하고, 인덱스와 매핑을 생성하고, 문서를 인덱싱하고, 문서를 검색함으로써 강력한 실시간 검색 엔진을 구축할 수 있습니다.

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

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