PHP에서 Elasticsearch를 이용한 실시간 데이터 정리 및 보관 방법

PHPz
풀어 주다: 2023-07-09 19:46:01
원래의
1484명이 탐색했습니다.

PHP에서 Elasticsearch를 이용한 실시간 데이터 정리 및 보관 방법

데이터 정리 및 보관은 데이터 처리에 있어서 매우 중요한 측면으로, 데이터의 정확성과 완전성을 보장할 수 있습니다. 실시간 데이터 처리에서 우리는 종종 정리하고 보관해야 하는 대량의 실시간 데이터에 직면합니다. 이 기사에서는 이 프로세스를 달성하기 위해 PHP와 Elasticsearch를 사용하는 방법을 소개합니다.

  1. Elasticsearch 소개

Elasticsearch는 분산된 전체 텍스트 검색 및 분석 엔진을 제공하는 Lucene 기반의 오픈 소스 검색 엔진입니다. 빠르고 안정적이며 대용량 데이터를 처리할 수 있는 것이 특징이다.

  1. Elasticsearch 설치 및 구성

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

  1. Elasticsearch PHP 클라이언트 설치

Composer를 사용하여 PHP 종속성을 관리하는 것이 좋은 방법입니다. Composer를 통해 Elasticsearch PHP 클라이언트를 설치할 수 있습니다.

프로젝트의 루트 디렉터리에 작곡가.json 파일을 만들고 다음 콘텐츠를 추가합니다.

{
    "require": {
        "elasticsearch/elasticsearch": "^7.0"
    }
}
로그인 후 복사

그런 다음 Composer를 사용하여 종속성을 설치합니다.

composer install
로그인 후 복사
  1. Elasticsearch에 연결

코드에서 먼저 다음을 수행해야 합니다. Elasticsearch 서버에 연결합니다. 이는 Elasticsearch PHP 클라이언트에서 제공하는 ElasticsearchClient 클래스를 사용하여 쉽게 달성할 수 있습니다.

require 'vendor/autoload.php';

$hosts = [
    [
        'host' => 'localhost',
        'port' => 9200,
        'scheme' => 'http',
    ],
];

$client = ElasticsearchClientBuilder::create()
    ->setHosts($hosts)
    ->build();
로그인 후 복사

위 코드에서는 Elasticsearch 서버의 호스트 이름, 포트 번호 및 프로토콜을 지정했습니다. 실제 상황에 따라 필요에 따라 수정될 수 있습니다.

  1. 인덱스 및 매핑 생성

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" 필드를 키워드 유형으로 지정했습니다.

  1. 데이터 정리 및 보관

데이터 정리 및 보관 프로세스에서는 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를 사용하여 보관할 데이터에 대해 일괄 색인 작업을 수행합니다.

  1. 예약된 작업

실시간 데이터 정리 및 보관을 달성하기 위해 예약된 작업을 사용하여 정기적으로 데이터 처리 프로세스를 수행할 수 있습니다. Linux 시스템에서는 cron을 사용하여 예약된 작업을 설정할 수 있습니다.

예를 들어, 데이터 정리 및 보관을 위한 코드가 포함된 "clean.php"라는 PHP 스크립트를 생성하고 cron을 사용하여 매시간 실행되도록 설정할 수 있습니다.

0 * * * * php /path/to/clean.php
로그인 후 복사

위 코드에서 "0 "는 매시간 0분에 실행된다는 의미입니다.

요약하자면, PHP와 Elasticsearch를 사용하여 실시간 데이터 정리 및 보관 방법을 구현할 수 있습니다. Elasticsearch 서버에 연결하고, 인덱스 및 매핑을 생성하고, 데이터 처리를 위해 쿼리 및 인덱스 API를 사용하고, 예약된 작업을 사용하여 정기적으로 데이터 처리 프로세스를 수행함으로써 대량의 실시간 데이터를 효율적으로 정리하고 보관할 수 있습니다.

위 내용은 PHP에서 Elasticsearch를 이용한 실시간 데이터 정리 및 보관 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!