>  기사  >  백엔드 개발  >  PHP 및 Elasticsearch에서 구현된 고성능 데이터 필터링 및 필터링 방법

PHP 및 Elasticsearch에서 구현된 고성능 데이터 필터링 및 필터링 방법

WBOY
WBOY원래의
2023-07-07 11:05:12826검색

PHP와 Elasticsearch가 구현하는 고성능 데이터 필터링 및 필터링 방법

인터넷의 급속한 발전으로 빅데이터 시대가 도래했고, 대용량 데이터를 처리하는 것은 많은 애플리케이션에서 중요한 과제가 되었습니다. 웹 개발에서는 사용자 요구 사항을 충족하기 위해 많은 양의 데이터를 필터링하고 필터링해야 하는 경우가 많습니다. 기존 데이터베이스 쿼리는 대용량 데이터를 처리할 때 성능 문제가 있었는데, 실시간 분산 검색 및 분석 엔진인 Elasticsearch는 빅데이터 처리에 이상적인 선택이 되었습니다. 이 기사에서는 PHP와 Elasticsearch를 사용하여 고성능 데이터 필터링 및 필터링 방법을 구현하는 방법을 소개하고 코드 예제를 첨부합니다.

1. Elasticsearch 및 PHP Elasticsearch 라이브러리 설치

시작하기 전에 Elasticsearch 및 PHP Elasticsearch 라이브러리를 설치해야 합니다. 먼저 Elasticsearch 공식 홈페이지(https://www.elastic.co/products/elasticsearch)에 접속하여 Elasticsearch 최신 버전을 다운로드 및 설치하세요. 다음으로 Composer를 사용하여 PHP Elasticsearch 라이브러리를 설치합니다. 프로젝트 루트 디렉터리에서 다음 명령을 실행할 수 있습니다.

composer require elasticsearch/elasticsearch

2. Elasticsearch 클러스터에 연결

데이터 필터링 및 필터링을 시작하기 전에 연결을 설정해야 합니다. Elasticsearch 클러스터에. 먼저 elasticsearch.php라는 PHP 파일을 만들고 파일에 다음 코드를 추가합니다. elasticsearch.php,并在文件中添加以下代码:

<?php
require 'vendor/autoload.php';

$client = ElasticsearchClientBuilder::create()->build();

以上代码使用PHP Elasticsearch库提供的ElasticsearchClientBuilder类建立与Elasticsearch集群的连接。我们可以使用$client变量来执行各种操作,如索引、搜索等。

三、创建索引和插入数据

在进行数据过滤和筛选之前,我们首先需要创建一个索引并插入一些测试数据。假设我们要处理的数据是商品列表,每个商品包含名称、价格和库存。以下是创建索引和插入数据的示例代码:

<?php
require 'elasticsearch.php';

$params = [
    'index' => 'products',
    'body' => [
        [
            'name' => 'iPhone X',
            'price' => 999,
            'stock' => 10
        ],
        [
            'name' => 'Samsung Galaxy S10',
            'price' => 899,
            'stock' => 5
        ],
        [
            'name' => 'Google Pixel 3',
            'price' => 799,
            'stock' => 3
        ],
        // 更多商品...
    ]
];

$response = $client->index($params);

以上代码将创建一个名为products的索引,并插入了一些测试数据。每个商品都包含名称、价格和库存三个字段。我们可以根据这些字段来进行数据的过滤和筛选。

四、实现数据的过滤和筛选

假设我们要实现以下几种基本的数据过滤和筛选操作:根据商品价格进行范围查询、根据商品名称进行搜索、根据商品库存进行筛选。以下是对应的代码示例:

  1. 根据商品价格进行范围查询
<?php
require 'elasticsearch.php';

$params = [
    'index' => 'products',
    'body' => [
        'query' => [
            'range' => [
                'price' => [
                    'gte' => 800,
                    'lte' => 1000
                ]
            ]
        ]
    ]
];

$response = $client->search($params);

以上代码将根据price字段进行范围查询,返回价格在800到1000之间的商品列表。

  1. 根据商品名称进行搜索
<?php
require 'elasticsearch.php';

$params = [
    'index' => 'products',
    'body' => [
        'query' => [
            'match' => [
                'name' => 'iPhone'
            ]
        ]
    ]
];

$response = $client->search($params);

以上代码将根据name字段进行搜索,返回名称包含关键词iPhone的商品列表。

  1. 根据商品库存进行筛选
<?php
require 'elasticsearch.php';

$params = [
    'index' => 'products',
    'body' => [
        'query' => [
            'bool' => [
                'filter' => [
                    'term' => [
                        'stock' => 0
                    ]
                ]
            ]
        ]
    ]
];

$response = $client->search($params);

以上代码将根据stock字段进行筛选,返回库存为0的商品列表。

五、处理搜索结果

对于以上每个搜索操作,我们都可以通过$response变量获取搜索结果。以下是如何处理搜索结果的示例代码:

<?php
// ...
$response = $client->search($params);

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

foreach ($hits as $hit) {
    $source = $hit['_source'];
    // 处理搜索结果...
}

以上代码将遍历搜索结果的每个命中(hit),并通过$sourcerrreee

위 코드는 PHP Elasticsearch에서 제공하는 ElasticsearchClientBuilder 클래스를 사용합니다. 라이브러리를 구축하고 Elasticsearch 클러스터에 연결합니다. $client 변수를 사용하여 색인 생성, 검색 등과 같은 다양한 작업을 수행할 수 있습니다.

3. 인덱스 생성 및 데이터 삽입

데이터를 필터링하고 필터링하기 전에 먼저 인덱스를 생성하고 테스트 데이터를 삽입해야 합니다. 처리하려는 데이터가 제품 목록이고 각 제품에는 이름, 가격 및 재고가 포함되어 있다고 가정합니다. 다음은 색인을 생성하고 데이터를 삽입하는 샘플 코드입니다. 🎜rrreee🎜위 코드는 products라는 색인을 생성하고 일부 테스트 데이터를 삽입합니다. 각 제품에는 이름, 가격, 재고라는 세 가지 필드가 있습니다. 이러한 필드를 기반으로 데이터를 필터링하고 필터링할 수 있습니다. 🎜🎜4. 데이터 필터링 및 필터링 구현🎜🎜제품 가격 기반 범위 쿼리, 제품 이름 기반 검색, 제품 재고 기반 필터 등 기본 데이터 필터링 및 필터링 작업을 구현한다고 가정해 보겠습니다. 다음은 해당 코드 예시입니다. 🎜
  1. 제품 가격을 기준으로 범위 쿼리
rrreee🎜위 코드는 가격 필드를 기준으로 범위 쿼리를 수행합니다. , 반환된 가격은 800에서 1000 사이의 항목 목록에 있습니다. 🎜
  1. 제품 이름으로 검색
rrreee🎜위 코드는 name 필드를 기반으로 검색하며 반환된 이름에는 다음이 포함됩니다. 키워드 iPhone의 제품 목록. 🎜
  1. 제품 재고를 기준으로 필터링
rrreee🎜위 코드는 재고 필드를 기준으로 필터링하고 제품 목록을 반환합니다. 인벤토리가 0개입니다. 🎜🎜5. 검색 결과 처리🎜🎜위의 각 검색 작업에 대해 $response 변수를 통해 검색 결과를 얻을 수 있습니다. 다음은 검색 결과를 처리하는 방법에 대한 샘플 코드입니다. 🎜rrreee🎜위 코드는 검색 결과의 각 조회를 반복하고 $source 변수를 통해 조회의 소스 데이터에 액세스합니다. 우리는 검색 결과를 웹 페이지에 표시하거나 추가 처리하는 등 필요에 따라 처리할 수 있습니다. 🎜🎜6. 요약🎜🎜이 글에서는 PHP와 Elasticsearch를 사용하여 고성능 데이터 필터링 및 필터링 방법을 구현하는 방법을 소개합니다. Elasticsearch와의 연결을 설정하고 Elasticsearch의 효율적인 검색 및 분석 기능을 활용함으로써 우리는 대량의 데이터를 쉽게 처리하고 요구 사항에 맞는 데이터를 빠르게 필터링하고 필터링할 수 있습니다. 이 글이 빅데이터를 다루어야 하는 웹 개발자들에게 도움이 되기를 바랍니다. 🎜

위 내용은 PHP 및 Elasticsearch에서 구현된 고성능 데이터 필터링 및 필터링 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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