Kotlin के लिए Elasticsearch REST क्लाइंट: उपयोग गाइड

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

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

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

Kotlin के लिए Elasticsearch क्लाइंट: खोज और विश्लेषण के लिए शक्तिशाली उपकरण

\n\n

Elasticsearch Apache Lucene पर आधारित एक वितरित खोज और विश्लेषण प्रणाली है, जो बड़ी मात्रा में डेटा पर फुल-टेक्स्ट खोज, एग्रीगेशन और विश्लेषण को तेज़ी से करने की अनुमति देती है। Kotlin अनुप्रयोगों से Elasticsearch के साथ काम करने के लिए कई क्लाइंट मौजूद हैं, लेकिन सबसे आधुनिक और अनुशंसित Elasticsearch Java Client (संस्करण 7.16 से) है जिसमें Kotlin के लिए पूर्ण समर्थन है। इस लेख में, हम इसकी स्थापना, कॉन्फ़िगरेशन और बुनियादी संचालन पर विचार करेंगे।

\n\n

स्थापना और कनेक्शन

\n\n

आरंभ करने के लिए, अपने build.gradle.kts में निर्भरता जोड़ें:

\n\n
dependencies {\n    implementation("co.elastic.clients:elasticsearch-java:8.15.0")\n    implementation("com.fasterxml.jackson.module:jackson-module-kotlin:2.17.0")\n    implementation("jakarta.json:jakarta.json-api:2.1.3")\n}
\n\n

Maven (pom.xml) के लिए:

\n\n
<dependency>\n    <groupId>co.elastic.clients</groupId>\n    <artifactId>elasticsearch-java</artifactId>\n    <version>8.15.0</version>\n</dependency>\n<dependency>\n    <groupId>com.fasterxml.jackson.module</groupId>\n    <artifactId>jackson-module-kotlin</artifactId>\n    <version>2.17.0</version>\n</dependency>
\n\n

क्लाइंट बनाना

\n\n

लाइब्रेरी कॉन्फ़िगरेशन के लिए Builder पैटर्न का उपयोग करती है। नीचे स्थानीय Elasticsearch इंस्टेंस से कनेक्ट करने वाला क्लाइंट बनाने का एक उदाहरण दिया गया है:

\n\n
import co.elastic.clients.elasticsearch.ElasticsearchClient\nimport co.elastic.clients.json.jackson.JacksonJsonpMapper\nimport co.elastic.clients.transport.ElasticsearchTransport\nimport co.elastic.clients.transport.rest_client.RestClientTransport\nimport org.apache.http.HttpHost\nimport org.elasticsearch.client.RestClient\n\nfun createElasticsearchClient(): ElasticsearchClient {\n    // HTTP क्लाइंट बनाएँ (बिना प्रमाणीकरण के)\n    val restClient = RestClient.builder(\n        HttpHost("localhost", 9200, "http")\n    ).build()\n\n    // Jackson JSON-मैपर के साथ ट्रांसपोर्ट बनाएँ\n    val transport: ElasticsearchTransport = RestClientTransport(\n        restClient, \n        JacksonJsonpMapper()\n    )\n\n    // और तैयार क्लाइंट लौटाएँ\n    return ElasticsearchClient(transport)\n}
\n\n

प्रोडक्शन वातावरण के लिए प्रमाणीकरण और HTTPS का उपयोग करने की अनुशंसा की जाती है:

\n\n
val credentialsProvider = BasicCredentialsProvider()\ncredentialsProvider.setCredentials(\n    AuthScope.ANY,\n    UsernamePasswordCredentials("elastic", "your_password")\n)\n\nval restClient = RestClient.builder(\n    HttpHost("your-cluster.com", 9243, "https")\n)\n.setHttpClientConfigCallback { httpClientBuilder ->\n    httpClientBuilder.setDefaultCredentialsProvider(credentialsProvider)\n}\n.build()
\n\n

इंडेक्स के साथ कार्य

\n\n

दस्तावेज़ों पर संचालन करने से पहले एक इंडेक्स बनाना होगा (यदि वह मौजूद नहीं है)। मैपिंग के साथ इंडेक्स बनाने का उदाहरण:

\n\n
suspend fun createIndex(client: ElasticsearchClient, indexName: String) {\n    val response = client.indices().create { createBuilder ->\n        createBuilder\n            .index(indexName)\n            .mappings { mappings ->\n                mappings\n                    .properties("title") { prop -> prop.text { it } }\n                    .properties("content") { prop -> prop.text { it } }\n                    .properties("timestamp") { prop -> prop.date { it } }\n            }\n    }\n    println("इंडेक्स बनाया गया: ${response.acknowledged}")\n}
\n\n

दस्तावेज़ों के साथ CRUD संचालन

\n\n

दस्तावेज़ बनाना/अपडेट करना (Index API)

\n\n
data class Article(\n    val title: String,\n    val content: String,\n    val timestamp: String = java.time.Instant.now().toString()\n)\n\nsuspend fun indexDocument(client: E                    

अनुशंसाएँ