PHP에서 Elasticsearch를 이용한 실시간 데이터 정리 및 보관 방법
데이터 정리 및 보관은 데이터 처리에 있어서 매우 중요한 측면으로, 데이터의 정확성과 완전성을 보장할 수 있습니다. 실시간 데이터 처리에서 우리는 종종 정리하고 보관해야 하는 대량의 실시간 데이터에 직면합니다. 이 기사에서는 이 프로세스를 달성하기 위해 PHP와 Elasticsearch를 사용하는 방법을 소개합니다.
Elasticsearch는 분산된 전체 텍스트 검색 및 분석 엔진을 제공하는 Lucene 기반의 오픈 소스 검색 엔진입니다. 빠르고 안정적이며 대용량 데이터를 처리할 수 있는 것이 특징이다.
먼저 Elasticsearch를 설치하고 구성해야 합니다. 공식 홈페이지(https://www.elastic.co/)에서 자신의 시스템에 맞는 버전을 다운로드한 후, 공식 문서에 따라 설치 및 구성하시면 됩니다.
Composer를 사용하여 PHP 종속성을 관리하는 것이 좋은 방법입니다. Composer를 통해 Elasticsearch PHP 클라이언트를 설치할 수 있습니다.
프로젝트의 루트 디렉터리에 작곡가.json 파일을 만들고 다음 콘텐츠를 추가합니다.
{ "require": { "elasticsearch/elasticsearch": "^7.0" } }
그런 다음 Composer를 사용하여 종속성을 설치합니다.
composer install
코드에서 먼저 다음을 수행해야 합니다. Elasticsearch 서버에 연결합니다. 이는 Elasticsearch PHP 클라이언트에서 제공하는 ElasticsearchClient 클래스를 사용하여 쉽게 달성할 수 있습니다.
require 'vendor/autoload.php'; $hosts = [ [ 'host' => 'localhost', 'port' => 9200, 'scheme' => 'http', ], ]; $client = ElasticsearchClientBuilder::create() ->setHosts($hosts) ->build();
위 코드에서는 Elasticsearch 서버의 호스트 이름, 포트 번호 및 프로토콜을 지정했습니다. 실제 상황에 따라 필요에 따라 수정될 수 있습니다.
Elasticsearch에서는 데이터가 인덱스 형태로 저장됩니다. 먼저 인덱스를 생성하고 각 필드의 데이터 유형과 매핑 관계를 지정해야 합니다.
$params = [ 'index' => 'data', 'body' => [ 'mappings' => [ 'properties' => [ 'timestamp' => [ 'type' => 'date', ], 'message' => [ 'type' => 'text', ], 'status' => [ 'type' => 'keyword', ], ], ], ], ]; $response = $client->indices()->create($params);
위 코드에서는 "data"라는 인덱스를 생성하고 "timestamp" 필드를 날짜 유형으로, "message" 필드를 텍스트 유형으로, "status" 필드를 키워드 유형으로 지정했습니다.
데이터 정리 및 보관 프로세스에서는 Elasticsearch에서 제공하는 쿼리 및 인덱싱 API를 사용하여 이를 달성할 수 있습니다.
예를 들어 query_string 쿼리 문을 사용하여 정리하고 보관해야 하는 데이터를 필터링할 수 있습니다.
$params = [ 'index' => 'raw_data', 'body' => [ 'query' => [ 'query_string' => [ 'query' => 'status:success AND timestamp:[now-1h TO now]', ], ], ], ]; $response = $client->search($params);
위 코드에서는 query_string 쿼리 문을 사용하여 상태가 "성공"인 데이터를 필터링하고 지난 1시간 내의 타임스탬프. 실제 필요에 따라 쿼리 조건을 필요에 따라 수정할 수 있습니다.
그런 다음 대량 색인 API를 사용하여 정리된 데이터를 지정된 색인에 보관할 수 있습니다.
$params = [ 'index' => 'data', 'body' => [], ]; foreach ($response['hits']['hits'] as $hit) { $params['body'][] = [ 'index' => [ '_index' => 'data', '_id' => $hit['_id'], ], ]; $params['body'][] = $hit['_source']; } $client->bulk($params);
위 코드에서는 대량 색인 API를 사용하여 보관할 데이터에 대해 일괄 색인 작업을 수행합니다.
실시간 데이터 정리 및 보관을 달성하기 위해 예약된 작업을 사용하여 정기적으로 데이터 처리 프로세스를 수행할 수 있습니다. Linux 시스템에서는 cron을 사용하여 예약된 작업을 설정할 수 있습니다.
예를 들어, 데이터 정리 및 보관을 위한 코드가 포함된 "clean.php"라는 PHP 스크립트를 생성하고 cron을 사용하여 매시간 실행되도록 설정할 수 있습니다.
0 * * * * php /path/to/clean.php
위 코드에서 "0 "는 매시간 0분에 실행된다는 의미입니다.
요약하자면, PHP와 Elasticsearch를 사용하여 실시간 데이터 정리 및 보관 방법을 구현할 수 있습니다. Elasticsearch 서버에 연결하고, 인덱스 및 매핑을 생성하고, 데이터 처리를 위해 쿼리 및 인덱스 API를 사용하고, 예약된 작업을 사용하여 정기적으로 데이터 처리 프로세스를 수행함으로써 대량의 실시간 데이터를 효율적으로 정리하고 보관할 수 있습니다.
위 내용은 PHP에서 Elasticsearch를 이용한 실시간 데이터 정리 및 보관 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!