Elasticsearch क्लाइंट PHP के लिए: elasticsearch-php
Elasticsearch एक शक्तिशाली वितरित खोज प्रणाली और विश्लेषणात्मक डेटाबेस है, जो Apache Lucene पर बनाया गया है। PHP अनुप्रयोगों से इसके साथ इंटरैक्ट करने के लिए एक आधिकारिक क्लाइंट मौजूद है — elasticsearch-php। यह लाइब्रेरी सभी ऑपरेशनों के लिए एक सुविधाजनक और पूर्ण API प्रदान करती है: दस्तावेज़ इंडेक्सिंग से लेकर जटिल फुल-टेक्स्ट क्वेरी और एग्रीगेशन तक।
इंस्टॉलेशन और कनेक्शन
इंस्टॉलेशन Composer के माध्यम से किया जाता है — PHP के लिए मानक पैकेज मैनेजर:
composer require elasticsearch/elasticsearchइंस्टॉलेशन के बाद, अपने Elasticsearch क्लस्टर का होस्ट (या कई होस्ट) निर्दिष्ट करते हुए क्लाइंट का एक इंस्टेंस बनाना आवश्यक है:
<?phprequire 'vendor/autoload.php';
use Elastic\\Elasticsearch\\ClientBuilder;
$client = ClientBuilder::create() ->setHosts(['http://localhost:9200']) ->build();?>सुरक्षित कनेक्शन (HTTPS, प्रमाणीकरण) के लिए अतिरिक्त पैरामीटर पास किए जा सकते हैं:
$client = ClientBuilder::create() ->setHosts(['https://user:password@my-elastic.cloud:9243']) ->setSSLVerification(false) // केवल परीक्षण के लिए! ->build();डेटा के साथ मुख्य ऑपरेशन
इंडेक्स बनाना
Elasticsearch में इंडेक्स SQL में डेटाबेस के समान है। डेटा सहेजने से पहले इसे मैपिंग के साथ स्पष्ट रूप से बनाया जा सकता है:
$params = [ 'index' => 'products', 'body' => [ 'settings' => [ 'number_of_shards' => 1, 'number_of_replicas' => 1 ], 'mappings' => [ 'properties' => [ 'title' => ['type' => 'text'], 'price' => ['type' => 'float'], 'created_at' => ['type' => 'date'] ] ] ]];
$response = $client->indices()->create($params);दस्तावेज़ इंडेक्सिंग (जोड़ना/अपडेट करना)
एक दस्तावेज़ जोड़ने के लिए index विधि का उपयोग किया जाता है:
$params = [ 'index' => 'products', 'id' => '1', 'body' => [ 'title' => 'ASUS ROG लैपटॉप', 'price' => 120000.00, 'created_at' => '2025-01-15' ]];
$response = $client->index($params);यदि ऐसे id वाला दस्तावेज़ पहले से मौजूद है — तो इसे ओवरराइट कर दिया जाएगा। आंशिक अपडेट के लिए update का उपयोग किया जाता है।
दस्तावेज़ प्राप्त करना
$params = [ 'index' => 'products', 'id' => '1'];
$response = $client->get($params);$document = $response['_source'];echo $document['title']; // ASUS ROG लैपटॉपदस्तावेज़ हटाना
$params = [ 'index' => 'products', 'id' => '1'];
$response = $client->delete($params);खोज और फ़िल्टरिंग
Elasticsearch की सबसे शक्तिशाली क्षमता — फुल-टेक्स्ट खोज। नाम से उत्पाद खोजने का उदाहरण:
$params = [ 'index' => 'products', 'body' => [ 'query' => [ 'match' => [ 'title' => 'लैपटॉप' ] ] ]];
$response = $client->search($params);
// परिणामों की प्रोसेसिंगforeach ($response['hits']['hits'] as $hit) { echo 'ID: ' . $hit['_id'] . ', Title: ' . $hit['_source']['title'] . "";}bool क्वेरी का उपयोग करके शर्तों को जोड़ा जा सकता है:
$params = [ 'index' => 'products', 'body' => [ 'query' => [ 'bool' => [ 'must' => [ ['match' => ['title' => 'लैपटॉप']] ], 'filter' => [ ['range' => ['price' => ['gte' => 50000