Cara menggunakan PHP dan Elasticsearch untuk mencapai pengagregatan dan analisis hasil

WBOY
Lepaskan: 2023-07-17 13:06:01
asal
1193 orang telah melayarinya

Cara menggunakan PHP dan Elasticsearch untuk mencapai pengagregatan dan analisis hasil

Pengenalan:
Dengan perkembangan pesat Internet dan teknologi maklumat, pertumbuhan pesat volum data menjadikan penyimpanan, pemprosesan dan analisis data menjadi lebih penting. Sebagai enjin carian dan analisis teragih sumber terbuka, Elasticsearch mempunyai keupayaan mendapatkan semula teks penuh, analisis masa nyata dan pengagregatan data yang berkuasa, dan telah digunakan secara meluas dalam pelbagai industri utama. Dalam artikel ini, kami akan memperkenalkan cara menggunakan PHP dan Elasticsearch untuk melaksanakan pengagregatan dan analisis hasil, dan memberikan contoh kod yang sepadan.

1. Penyediaan:

  1. Pasang dan konfigurasikan Elasticsearch
    Sebelum menggunakan Elasticsearch, anda perlu memasang dan mengkonfigurasi pelayan Elasticsearch. Anda boleh merujuk kepada dokumentasi rasmi Elasticsearch untuk pemasangan dan konfigurasi.
  2. Pasang dan konfigurasikan perpustakaan PHP
    Dalam PHP, kita perlu menggunakan perpustakaan yang beroperasi pada Elasticsearch. Anda boleh menggunakan alat pengurusan pakej Komposer untuk memasang perpustakaan PHP yang diperlukan, seperti perpustakaan elasticsearch/elasticsearch.

2 Sambung ke Elasticsearch:
Pertama, kita perlu menyambung ke pelayan Elasticsearch. Anda boleh menggunakan kelas Elasticsearch yang disediakan oleh perpustakaan elasticsearch/elasticsearch untuk melaksanakan sambungan:

require 'vendor/autoload.php';
$hosts = [
    'localhost:9200' // Elasticsearch服务端的地址和端口
];
$client = ElasticsearchClientBuilder::create()
             ->setHosts($hosts)
             ->build();
Salin selepas log masuk

3. Pengindeksan dan penyimpanan data:
Dalam Elasticsearch, indeks ialah konsep yang serupa dengan jadual dalam pangkalan data, digunakan untuk menyimpan dan cari data. Pertama, kita perlu mencipta indeks untuk data kita dan menentukan pemetaan yang sepadan.

  1. Buat indeks:
    Gunakan kaedah indeks()->create() kelas Elasticsearch untuk mencipta indeks baharu:
$params = [
    'index' => 'my_index', // 索引名称
    'body'  => [
        'settings' => [
            'number_of_shards' => 1,
            'number_of_replicas' => 0
        ],
    ],
];
$response = $client->indices()->create($params);
Salin selepas log masuk
  1. Buat pemetaan:
    Pemetaan dalam struktur dan sifat mentakrifkan daripada dokumen tersebut. Anda boleh menggunakan kaedah indeks()->putMapping() untuk mentakrifkan pemetaan dalam indeks sedia ada:
$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);
Salin selepas log masuk
  1. Data storan:
    Gunakan kaedah indeks() untuk memasukkan data ke dalam indeks:
rreee

4. Hasil Pengagregatan dan analisis:
Dalam Elasticsearch, pengagregatan ialah fungsi berkuasa yang boleh melaksanakan operasi seperti pengumpulan dan statistik pada data. Anda boleh menggunakan kaedah carian() untuk melaksanakan fungsi pengagregatan dan analisis.

  1. Cari dan pengagregatan:
    Gunakan kaedah carian() untuk merealisasikan fungsi carian dan pengagregatan Dengan melepasi parameter pertanyaan dan parameter pengagregatan yang sepadan, anda boleh memperoleh hasil yang diperlukan:
$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);
Salin selepas log masuk
  1. Analisis hasil: h. Hasil agregat boleh memperoleh data yang diperlukan Anda boleh menggunakan kaedah getResponse() untuk mendapatkan hasil respons yang lengkap dan kemudian menganalisisnya:
  2. $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);
    Salin selepas log masuk
    Kesimpulan:

    Melalui kod contoh di atas, kita boleh menggunakan PHP dan Elasticsearch untuk mencapai hasil. fungsi pengagregatan dan Analisis. Sudah tentu, Elasticsearch mempunyai fungsi dan penggunaan yang lebih kompleks Kami berharap pembaca dapat meneroka dan menggunakannya secara fleksibel untuk memenuhi keperluan senario yang berbeza. Saya harap artikel ini bermanfaat kepada pembaca, terima kasih kerana membaca!

    Atas ialah kandungan terperinci Cara menggunakan PHP dan Elasticsearch untuk mencapai pengagregatan dan analisis hasil. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!