Elasticsearch PHP क्लाइंट: elasticsearch-php पूरी गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

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";
}

यह रिजल्ट उन डॉक्यूमेंट को लौटाएगा जिनमें "लैपटॉप" शब्द मौजूद है।

अनुशंसाएँ