Ini adalah klien PHP resmi untuk Elasticsearch.
Unduh Elasticsearch versi terbaru atau daftar untuk uji coba gratis Elastic Cloud .
Lihat bagian Instalasi pada dokumentasi memulai.
Lihat bagian Menghubungkan pada dokumentasi memulai.
Klien elasticsearch-php
menawarkan 400+ titik akhir untuk berinteraksi dengan Elasticsearch. Daftar semua titik akhir ini tersedia di dokumentasi resmi API Elasticsearch.
Di sini kami melaporkan operasi dasar yang dapat Anda lakukan dengan klien: mengindeks, mencari, dan menghapus.
Klien ini dibuat versinya dan dirilis bersama server Elasticsearch.
Untuk menjamin kompatibilitas, gunakan versi terbaru perpustakaan ini dalam versi utama penerapan Pencarian Perusahaan yang sesuai.
Misalnya, untuk Elasticsearch 7.16
, gunakan 7.16
perpustakaan ini atau yang lebih baru, tetapi bukan 8.0
.
Klien Elasticsearch kompatibel dengan versi PHP yang saat ini dikelola.
Klien bahasa kompatibel ke depan; artinya klien mendukung komunikasi dengan versi kecil Elasticsearch yang lebih besar atau sama tanpa terputus. Ini tidak berarti bahwa klien secara otomatis mendukung fitur baru dari versi Elasticsearch yang lebih baru; ini hanya mungkin setelah rilis versi klien baru. Misalnya, versi klien 8.12 tidak akan secara otomatis mendukung fitur baru Elasticsearch versi 8.13, versi klien 8.13 diperlukan untuk itu. Klien bahasa Elasticsearch hanya kompatibel dengan distribusi default dan tanpa jaminan.
Versi Elasticsearch | Cabang Elasticsearch-PHP | Didukung |
---|---|---|
utama | utama | |
8.x | 8.x | 8.x |
7.x | 7.x | 7.17 |
elasticsearch-php
versi 8.0.0 berisi implementasi baru dibandingkan dengan 7.x. Ini mendukung PSR-7 untuk pesan HTTP dan PSR-18 untuk komunikasi klien HTTP.
Kami mencoba mengurangi jeda BC sebanyak mungkin dengan 7.x
tetapi ada beberapa perbedaan (besar):
ElasticElasticsearch
Exception
, menggunakan namespace ElasticElasticsearchException
. Semua pengecualian memperluas antarmuka ElasticsearchException
, seperti pada 7.xConnectionPool
di NodePool
. Penamaan connection
tidak jelas karena objeknya adalah node (host)Anda dapat melihat file BREAKING_CHANGES untuk informasi lebih lanjut.
Jika Anda perlu meniru klien Elasticsearch, Anda hanya perlu meniru Klien HTTP PSR-18.
Misalnya, Anda dapat menggunakan php-http/mock-client sebagai berikut:
use Elastic Elasticsearch ClientBuilder ;
use Elastic Elasticsearch Response Elasticsearch ;
use Http Mock Client ;
use Nyholm Psr7 Response ;
$ mock = new Client (); // This is the mock client
$ client = ClientBuilder:: create ()
-> setHttpClient ( $ mock )
-> build ();
// This is a PSR-7 response
$ response = new Response (
200 ,
[Elasticsearch:: HEADER_CHECK => Elasticsearch:: PRODUCT_NAME ],
' This is the body! '
);
$ mock -> addResponse ( $ response );
$ result = $ client -> info (); // Just calling an Elasticsearch endpoint
echo $ result -> asString (); // This is the body!
Kami menggunakan ClientBuilder::setHttpClient()
untuk menyetel klien tiruan. Anda dapat menentukan respons yang ingin Anda dapatkan menggunakan fungsi addResponse($response)
. Seperti yang Anda lihat, $response
adalah objek respons PSR-7. Dalam contoh ini kami menggunakan objek NyholmPsr7Response
dari proyek nyholm/psr7. Jika Anda menggunakan PHPUnit Anda bahkan dapat meniru ResponseInterface
sebagai berikut:
$ response = $ this -> createMock ( ' PsrHttpMessageResponseInterface ' );
Pemberitahuan : kami menambahkan header khusus dalam respons HTTP. Ini adalah header pemeriksaan produk, dan diperlukan untuk menjamin bahwa elasticsearch-php
berkomunikasi dengan server Elasticsearch 8.0+.
Untuk informasi lebih lanjut Anda dapat membaca bagian klien Mock dari dokumentasi PHP-HTTP.
Jika ada sesuatu yang tidak berfungsi seperti yang diharapkan, silakan buka masalah.
Anda dapat memeriksa forum diskusi komunitas Elastic.
Kami menyambut kontributor untuk proyek ini. Sebelum Anda mulai, beberapa info berguna...
8.0
silahkan menggunakan cabang 8.0
, untuk 8.1
menggunakan cabang 8.1
dan seterusnya.master
kecuali Anda ingin berkontribusi pada versi pengembangan klien ( master
mewakili versi utama berikutnya).Terima kasih sebelumnya atas kontribusi Anda!
MIT © Elastis