> 백엔드 개발 > PHP 튜토리얼 > PHP와 Elasticsearch를 사용하여 결과 집계 및 분석을 수행하는 방법

PHP와 Elasticsearch를 사용하여 결과 집계 및 분석을 수행하는 방법

WBOY
풀어 주다: 2023-07-17 13:06:01
원래의
1246명이 탐색했습니다.

PHP 및 Elasticsearch를 사용하여 결과 집계 및 분석을 수행하는 방법

소개:
인터넷과 정보 기술의 급속한 발전으로 인해 데이터 양의 폭발적인 증가로 인해 데이터 저장, 처리 및 분석이 점점 더 중요해지고 있습니다. 오픈 소스 분산 검색 및 분석 엔진인 Elasticsearch는 강력한 전체 텍스트 검색, 실시간 분석 및 데이터 집계 기능을 갖추고 있으며 다양한 주요 산업에서 널리 사용되고 있습니다. 이 기사에서는 PHP와 Elasticsearch를 사용하여 결과 집계 및 분석을 구현하는 방법을 소개하고 해당 코드 예제를 제공합니다.

1. 준비:

  1. Elasticsearch 설치 및 구성
    Elasticsearch를 사용하기 전에 Elasticsearch 서버를 설치하고 구성해야 합니다. 설치 및 구성에 대해서는 공식 Elasticsearch 설명서를 참조할 수 있습니다.
  2. PHP 라이브러리 설치 및 구성
    PHP에서는 Elasticsearch에서 작동하는 라이브러리를 사용해야 합니다. Composer 패키지 관리 도구를 사용하여 elasticsearch/elasticsearch 라이브러리와 같은 필수 PHP 라이브러리를 설치할 수 있습니다.

2. Elasticsearch에 연결:
먼저 Elasticsearch 서버에 연결해야 합니다. elasticsearch/elasticsearch 라이브러리에서 제공하는 Elasticsearch 클래스를 사용하여 연결을 구현할 수 있습니다:

require 'vendor/autoload.php';
$hosts = [
    'localhost:9200' // Elasticsearch服务端的地址和端口
];
$client = ElasticsearchClientBuilder::create()
             ->setHosts($hosts)
             ->build();
로그인 후 복사

3. 데이터 인덱싱 및 저장:
Elasticsearch에서 인덱스는 데이터베이스의 테이블과 유사한 개념으로, 저장하고 데이터를 저장하는 데 사용됩니다. 데이터를 찾아보세요. 먼저, 데이터에 대한 인덱스를 생성하고 해당 매핑을 지정해야 합니다.

  1. 색인 만들기:
    Elasticsearch 클래스의 indices()->create() 메서드를 사용하여 새 색인을 만듭니다.
$params = [
    'index' => 'my_index', // 索引名称
    'body'  => [
        'settings' => [
            'number_of_shards' => 1,
            'number_of_replicas' => 0
        ],
    ],
];
$response = $client->indices()->create($params);
로그인 후 복사
  1. 매핑 만들기:
    인덱스의 매핑은 구조와 속성을 정의합니다. 문서의. indices()->putMapping() 메서드를 사용하여 기존 인덱스에 매핑을 정의할 수 있습니다.
$params = [
    'index' => 'my_index', // 索引名称
    'type' => 'my_type', // 文档类型
    'body' => [
        'my_type' => [
            'properties' => [
                'title' => [
                    'type' => 'text'
                ],
                'content' => [
                    'type' => 'text'
                ],
                'date' => [
                    'type' => 'date'
                ],
                // 其他字段...
            ]
        ]
    ]
];
$response = $client->indices()->putMapping($params);
로그인 후 복사
  1. 저장 데이터:
    index() 메서드를 사용하여 인덱스에 데이터를 삽입합니다.
$params = [
    'index' => 'my_index', // 索引名称
    'type' => 'my_type', // 文档类型
    'body' => [
        'title' => 'Elasticsearch', // 文档字段及对应的值
        'content' => 'Elasticsearch is a distributed, RESTful search and analytics engine.',
        'date' => '2021-01-01'
        // 其他字段...
    ]
];
$response = $client->index($params);
로그인 후 복사

4. 결과 집계 및 분석:
Elasticsearch에서 집계는 데이터에 대한 그룹화 및 통계와 같은 작업을 수행할 수 있는 강력한 기능입니다. search() 메서드를 사용하여 집계 및 분석 기능을 구현할 수 있습니다.

  1. 검색 및 집계:
    search() 메서드를 사용하여 검색 및 집계 기능을 구현합니다. 해당 쿼리 매개변수와 집계 매개변수를 전달하면 필요한 결과를 얻을 수 있습니다.
$params = [
    'index' => 'my_index', // 索引名称
    'type' => 'my_type', // 文档类型
    'body' => [
        'query' => [ // 查询参数
            'match' => [
                'content' => 'Elasticsearch'
            ]
        ],
        'aggs' => [ // 聚合参数
            'group_by_date' => [
                'date_histogram' => [
                    'field' => 'date',
                    'interval' => 'month'
                ]
            ],
            // 其他聚合参数...
        ]
    ]
];
$response = $client->search($params);
로그인 후 복사
  1. 결과 분석:
    분석을 통해 집계된 결과는 필요한 데이터를 얻을 수 있습니다. getResponse() 메소드를 사용하여 완전한 응답 결과를 얻은 다음 분석할 수 있습니다.
$response = $client->search($params);
$result = $response['aggregations']['group_by_date']['buckets'];
foreach($result as $bucket) {
    $date = $bucket['key_as_string'];
    $count = $bucket['doc_count'];
    // 打印结果...
}
로그인 후 복사

결론:
위의 예제 코드를 통해 PHP와 Elasticsearch를 사용하여 결과를 얻을 수 있습니다. 집계 및 분석 기능. 물론 Elasticsearch에는 더 복잡한 기능과 사용법이 있습니다. 독자들이 다양한 시나리오의 요구 사항을 충족하기 위해 이를 더 자세히 살펴보고 유연하게 사용할 수 있기를 바랍니다. 이 글이 독자들에게 도움이 되었으면 좋겠습니다. 읽어주셔서 감사합니다!

위 내용은 PHP와 Elasticsearch를 사용하여 결과 집계 및 분석을 수행하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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