Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kaedah penapisan dan penapisan data berprestasi tinggi dilaksanakan dalam PHP dan Elasticsearch

Kaedah penapisan dan penapisan data berprestasi tinggi dilaksanakan dalam PHP dan Elasticsearch

WBOY
WBOYasal
2023-07-07 11:05:12868semak imbas

Kaedah penapisan dan penapisan data berprestasi tinggi yang dilaksanakan oleh PHP dan Elasticsearch

Dengan perkembangan pesat Internet, era data besar telah tiba, dan pemprosesan data besar-besaran telah menjadi cabaran penting untuk banyak aplikasi. Dalam pembangunan web, kita selalunya perlu menapis dan menapis sejumlah besar data untuk memenuhi keperluan pengguna. Pertanyaan pangkalan data tradisional mempunyai masalah prestasi apabila memproses data berskala besar, dan Elasticsearch, sebagai enjin carian dan analisis teragih masa nyata, telah menjadi pilihan ideal untuk memproses data besar. Artikel ini akan memperkenalkan cara menggunakan PHP dan Elasticsearch untuk melaksanakan kaedah penapisan dan penapisan data berprestasi tinggi, serta melampirkan contoh kod.

1. Pasang perpustakaan Elasticsearch dan PHP Elasticsearch

Sebelum kita mula, kita perlu memasang perpustakaan Elasticsearch dan PHP. Mula-mula, lawati tapak web rasmi Elasticsearch (https://www.elastic.co/products/elasticsearch) untuk memuat turun dan memasang versi terkini Elasticsearch. Seterusnya, kami menggunakan Komposer untuk memasang perpustakaan Elasticsearch PHP Anda boleh melaksanakan arahan berikut dalam direktori akar projek:

composer require elasticsearch/elasticsearch

2. Sambung ke kelompok Elasticsearch

Sebelum mula menapis dan menapis data, kami perlu mewujudkan sambungan. kepada kelompok Elasticsearch . Mula-mula, buat fail PHP, bernama elasticsearch.php, dan tambah kod berikut dalam fail: 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

Kod di atas menggunakan kelas ElasticsearchClientBuilder yang disediakan oleh PHP Elasticsearch perpustakaan untuk membina dan Sambungan kepada kelompok Elasticsearch. Kita boleh menggunakan pembolehubah $client untuk melaksanakan pelbagai operasi seperti pengindeksan, carian, dsb.

3. Buat indeks dan masukkan data

Sebelum menapis dan menapis data, kita perlu membuat indeks dan memasukkan beberapa data ujian. Katakan data yang ingin kita proses ialah senarai produk, setiap produk mengandungi nama, harga dan inventori. Berikut ialah contoh kod untuk membuat indeks dan memasukkan data: 🎜rrreee🎜Kod di atas akan membuat indeks bernama produk dan memasukkan beberapa data ujian. Setiap produk mengandungi tiga medan: nama, harga dan inventori. Kami boleh menapis dan menapis data berdasarkan medan ini. 🎜🎜4. Laksanakan penapisan dan penapisan data🎜🎜Andaikan kami ingin melaksanakan operasi penapisan dan penapisan data asas berikut: pertanyaan julat berdasarkan harga produk, carian berdasarkan nama produk dan penapis berdasarkan inventori produk. Berikut ialah contoh kod yang sepadan: 🎜
  1. Pertanyaan julat berdasarkan harga produk
rrreee🎜Kod di atas akan melaksanakan pertanyaan julat berdasarkan medan harga , dan harga yang dikembalikan adalah dalam Senarai item antara 800 dan 1000. 🎜
  1. Cari berdasarkan nama produk
rrreee🎜Kod di atas akan mencari berdasarkan medan name dan nama yang dikembalikan mengandungi kata kunci senarai produk iPhone. 🎜
  1. Tapis berdasarkan inventori produk
rrreee🎜Kod di atas akan menapis berdasarkan medan stok dan mengembalikan senarai produk dengan 0 inventori. 🎜🎜5 Memproses hasil carian🎜🎜Untuk setiap operasi carian di atas, kami boleh mendapatkan hasil carian melalui pembolehubah $response. Berikut ialah contoh kod cara memproses hasil carian: 🎜rrreee🎜Kod di atas akan berulang melalui setiap hit hasil carian dan mengakses data sumber hit melalui pembolehubah $source. Kami boleh memproses hasil carian mengikut keperluan kami sendiri, seperti memaparkannya di halaman web, pemprosesan selanjutnya, dsb. 🎜🎜6. Ringkasan🎜🎜Artikel ini memperkenalkan cara menggunakan PHP dan Elasticsearch untuk melaksanakan kaedah penapisan dan penapisan data berprestasi tinggi. Dengan mewujudkan sambungan kepada Elasticsearch dan memanfaatkan keupayaan carian dan analisis yang cekap Elasticsearch, kami boleh memproses sejumlah besar data dengan mudah dan menapis serta menapis data yang memenuhi keperluan kami dengan cepat. Saya harap artikel ini akan membantu pembangun web yang perlu berurusan dengan data besar. 🎜

Atas ialah kandungan terperinci Kaedah penapisan dan penapisan data berprestasi tinggi dilaksanakan dalam PHP dan Elasticsearch. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn