Elasticsearch Java Client: पूर्ण गाइड
Elasticsearch एक शक्तिशाली डिस्ट्रीब्यूटेड सर्च और एनालिटिक्स सिस्टम है, जो Apache Lucene पर आधारित है। Java एप्लिकेशन में इसे इंटीग्रेट करने के लिए Elastic कंपनी आधिकारिक Elasticsearch Java Client (पहले High-Level REST Client के नाम से जाना जाता था) प्रदान करती है। इस लेख में हम इस क्लाइंट का उपयोग करके मुख्य ऑपरेशनों को विस्तार से समझेंगे: कनेक्शन, डॉक्यूमेंट इंडेक्सिंग, CRUD ऑपरेशन और फुल-टेक्स्ट सर्च।
Elasticsearch Java Client क्या है?
Elasticsearch Java Client एक आधुनिक, टाइप-सेफ API है जो Java से Elasticsearch के साथ इंटरैक्ट करने के लिए बनाया गया है। यह एसिंक्रोनस HTTP क्लाइंट पर आधारित है और Elasticsearch के सभी वर्जन 7.x से शुरू होने वाले संस्करणों को सपोर्ट करता है। मुख्य लाभ:
- सभी Elasticsearch API का पूर्ण सपोर्ट (इंडेक्सिंग, सर्च, एग्रीगेशन, क्लस्टर मैनेजमेंट)।
- एसिंक्रोनस और रिएक्टिव — CompletableFuture और रिएक्टिव स्ट्रीम का बिल्ट-इन सपोर्ट।
- टाइप-सेफ DSL क्वेरी — कंपाइल टाइम पर एरर को कम करता है।
- सरल कॉन्फ़िगरेशन — न्यूनतम डिपेंडेंसी की आवश्यकता।
इंस्टॉलेशन और सेटअप
Maven प्रोजेक्ट में क्लाइंट को जोड़ने के लिए pom.xml में निम्नलिखित डिपेंडेंसी जोड़ें:
<dependency>
<groupId>co.elastic.clients</groupId>
<artifactId>elasticsearch-java</artifactId>
<version>8.15.0</version>
</dependency>
Gradle (build.gradle) के लिए:
implementation 'co.elastic.clients:elasticsearch-java:8.15.0'
JSON सीरियलाइज़ेशन/डीसीरियलाइज़ेशन के लिए Jackson की भी आवश्यकता होगी:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>2.17.0</version>
</dependency>
क्लाइंट बनाना और कनेक्ट करना
क्लाइंट बनाने के लिए Elasticsearch का होस्ट और पोर्ट निर्दिष्ट करना होता है। बेसिक कॉन्फ़िगरेशन का उदाहरण:
import co.elastic.clients.elasticsearch.ElasticsearchClient;
import co.elastic.clients.json.jackson.JacksonJsonpMapper;
import co.elastic.clients.transport.rest_client.RestClientTransport;
import org.apache.http.Header;
import org.apache.http.message.BasicHeader;
import org.elasticsearch.client.RestClient;
public class ElasticsearchExample {
public static ElasticsearchClient createClient() {
// Low-Level REST क्लाइंट बनाएं
RestClient restClient = RestClient.builder(
new HttpHost("localhost", 9200, "http")
).setDefaultHeaders(new Header[]{
new BasicHeader("Content-Type", "application/json")
}).build();
// Jackson मैपर के साथ ट्रांसपोर्ट
RestClientTransport transport = new RestClientTransport(restClient, new JacksonJsonpMapper());
// हाई-लेवल क्लाइंट
return new ElasticsearchClient(transport);
}
public static void main(String[] args) throws IOException {
ElasticsearchClient client = createClient();
System.out.println("क्लाइंट सफलतापूर्वक बन गया!");
client.close();
}
}
इंडेक्स के साथ काम करना
काम शुरू करने से पहले एक इंडेक्स बनाना आवश्यक है। मैपिंग के साथ इंडेक्स बनाने का उदाहरण:
public static void createIndex(ElasticsearchClient client, String indexName) throws IOException {
client.indices().create(c -> c
.index(indexName)
.mappings(m -> m
.properties("title", p -> p.text(t -> t))
.properties("content", p -> p.text(t -> t))
.properties("price", p -> p.double_(d -> d))
.properties("createdAt", p -> p.date(d -> d))
)
);
System.out.println("इंडेक्स '" + indexName + "' बन गया।");
}