Elasticsearch PHP क्लाइंट (elasticsearch-php): सर्च और एनालिटिक्स का शक्तिशाली टूल
Elasticsearch एक डिस्ट्रीब्यूटेड सर्च और एनालिटिक्स सिस्टम है, जो Apache Lucene पर आधारित है। यह बड़े डेटा को लगभग रीयल-टाइम में स्टोर, सर्च और एनालाइज़ करने की सुविधा देता है। PHP एप्लिकेशन से Elasticsearch के साथ इंटरैक्ट करने के लिए आधिकारिक क्लाइंट elasticsearch-php उपलब्ध है। यह लाइब्रेरी डॉक्यूमेंट इंडेक्सिंग से लेकर जटिल सर्च क्वेरी और एग्रीगेशन तक सभी ऑपरेशन के लिए आसान API प्रदान करती है।
इस लेख में हम elasticsearch-php की इंस्टॉलेशन, सेटअप और मुख्य फीचर्स को विस्तार से समझेंगे। आप सीखेंगे कि क्लस्टर से कैसे कनेक्ट करें, इंडेक्स कैसे बनाएं, डॉक्यूमेंट कैसे जोड़ें, सर्च कैसे करें और फिल्टरिंग व एग्रीगेशन जैसी एडवांस सुविधाओं का उपयोग कैसे करें।
elasticsearch-php की इंस्टॉलेशन
यह लाइब्रेरी Composer के माध्यम से वितरित की जाती है। इसे इंस्टॉल करने के लिए अपने प्रोजेक्ट की रूट डायरेक्टरी में यह कमांड चलाएं:
composer require elasticsearch/elasticsearch
इंस्टॉलेशन के बाद composer.json फ़ाइल में डिपेंडेंसी जुड़ जाएगी। सुनिश्चित करें कि आपके पास PHP 7.4 या उससे ऊपर का वर्जन और json एक्सटेंशन इंस्टॉल है।
Elasticsearch सर्वर से कनेक्ट करना
पहला कदम क्लाइंट बनाना है। लोकल सर्वर (डिफ़ॉल्ट रूप से Elasticsearch पोर्ट 9200 पर सुनता है) के लिए कोड इस प्रकार होगा:
<?php
require 'vendor/autoload.php';
use Elastic\Elasticsearch\ClientBuilder;
$client = ClientBuilder::create()
->setHosts(['localhost:9200'])
->build();
?>
अगर आपके सर्वर को ऑथेंटिकेशन की आवश्यकता है (जैसे यूज़रनेम/पासवर्ड या API-की), तो पैरामीटर इस प्रकार पास करें:
$client = ClientBuilder::create()
->setHosts(['https://user:pass@localhost:9200'])
->setSSLVerification(false) // केवल डेवलपमेंट के लिए
->build();
इंडेक्स और डॉक्यूमेंट के साथ काम करना
Elasticsearch डेटा को इंडेक्स (SQL में टेबल के समान) में स्टोर करता है। आइए एक सरल मैपिंग के साथ products नामक इंडेक्स बनाएं:
$params = [
'index' => 'products',
'body' => [
'settings' => [
'number_of_shards' => 1,
'number_of_replicas' => 0
],
'mappings' => [
'properties' => [
'title' => ['type' => 'text'],
'price' => ['type' => 'float'],
'description' => ['type' => 'text'],
'category' => ['type' => 'keyword']
]
]
]
];
$response = $client->indices()->create($params);
अब कुछ डॉक्यूमेंट जोड़ते हैं:
$documents = [
['title' => 'Dell XPS 15 लैपटॉप', 'price' => 1200.00, 'description' => 'काम के लिए शक्तिशाली अल्ट्राबुक', 'category' => 'electronics'],
['title' => 'किताब "PHP प्रोफेशनल्स के लिए"', 'price' => 45.50, 'description' => 'एडवांस लेवल पर PHP सीखना', 'category' => 'books'],
['title' => 'Sony WH-1000XM5 हेडफ़ोन', 'price' => 350.00, 'description' => 'नॉइज़ कैंसलेशन के साथ वायरलेस हेडफ़ोन', 'category' => 'electronics']
];
foreach ($documents as $id => $doc) {
$params = [
'index' => 'products',
'id' => $id + 1,
'body' => $doc
];
$response = $client->index($params);
}
डॉक्यूमेंट सर्च करना
आइए title फ़ील्ड में फुल-टेक्स्ट सर्च करें:
$params = [
'index' => 'products',
'body' => [
'query' => [
'match' => [
'title' => 'लैपटॉप'
]
]
]
];
$response = $client->search($params);
$hits = $response['hits']['hits'];
foreach ($hits as $hit) {
echo "ID: " . $hit['_id'] . " | शीर्षक: " . $hit['_source']['title'] . " | कीमत: " . $hit['_source']['price'] . "\n";
}
यह रिजल्ट उन डॉक्यूमेंट को लौटाएगा जिनमें "लैपटॉप" शब्द मौजूद है।
पुस्तकालय में भी
Java के लिए ORM: Hibernate, MyBatis और JPA की तुलना उदाहरणों के साथ
PHP में Kafka के साथ काम करना: लाइब्रेरीज़, इंस्टॉलेशन और कोड उदाहरण
TypeScript में कैशिंग: Redis, Memcached और in-memory समाधान
C# (.NET) में JSON प्रोसेसिंग: Newtonsoft.Json और System.Text.Json के लिए पूर्ण गाइड
Kotlin पर मशीन लर्निंग: KMath, Smile, KotlinDL और DeepLearning4J लाइब्रेरीज़ का अवलोकन