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