Swift (iOS/macOS) के लिए Elasticsearch क्लाइंट: एकीकरण और उदाहरण

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

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

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

Swift (iOS/macOS) के लिए Elasticsearch क्लाइंट

Elasticsearch एक शक्तिशाली वितरित खोज प्रणाली है, जो Apache Lucene पर आधारित है। iOS और macOS डेवलपर्स के लिए आधिकारिक क्लाइंट elasticsearch-swift उपलब्ध है, जो Swift एप्लिकेशन से Elasticsearch के साथ काम करने के लिए एक सुविधाजनक इंटरफ़ेस प्रदान करता है। यह लाइब्रेरी Elasticsearch के REST API को पूरी तरह से सपोर्ट करती है, जिसमें अनुक्रमण, खोज, एकत्रीकरण और क्लस्टर प्रबंधन शामिल है।



स्थापना और कॉन्फ़िगरेशन

क्लाइंट Swift Package Manager (SPM) के माध्यम से वितरित किया जाता है। प्रोजेक्ट में जोड़ने के लिए:

// Package.swift मेंdependencies: [    .package(url: "https://github.com/elastic/elasticsearch-swift.git", from: "8.10.0")]

या Xcode के माध्यम से: File → Add Packages → रिपॉजिटरी URL दर्ज करें। स्थापना के बाद, लाइब्रेरी को इम्पोर्ट करें:

import Elasticsearch


मुख्य क्षमताएँ

  • दस्तावेज़ अनुक्रमण — इंडेक्स में रिकॉर्ड जोड़ना, अपडेट करना और हटाना।
  • खोज — पूर्ण-पाठ, फ़ील्ड-आधारित, फ़िल्टर और सॉर्टिंग के साथ।
  • एकत्रीकरण — सांख्यिकीय गणना, समूहीकरण, हिस्टोग्राम।
  • क्लस्टर प्रबंधन — इंडेक्स बनाना/हटाना, शार्ड और रेप्लिका कॉन्फ़िगर करना।
  • async/await सपोर्ट — Swift Concurrency के आधुनिक मॉडल का उपयोग करके एसिंक्रोनस अनुरोध।


उपयोग का उदाहरण: कनेक्शन और अनुक्रमण

एक क्लाइंट बनाएँ और कुछ दस्तावेज़ों को इंडेक्स करें:

import Elasticsearch

let client = ElasticsearchClient( host: "https://your-cluster-url:9200", apiKey: "your-api-key")

struct Book: Codable { let id: String let title: String let author: String let year: Int}

let books = [ Book(id: "1", title: "Swift Programming", author: "John Doe", year: 2023), Book(id: "2", title: "iOS Development", author: "Jane Smith", year: 2024)]

for book in books { let response = try await client.index( index: "books", id: book.id, body: book ) print("Indexed: \\(response.result)")}


Query DSL का उपयोग करके खोज

Elasticsearch एक शक्तिशाली क्वेरी भाषा का समर्थन करता है। पूर्ण-पाठ खोज का उदाहरण:

import Elasticsearch

let query: [String: Any] = [ "query": [ "bool": [ "must": [ ["match": ["title": "Swift"]] ], "filter": [ ["range": ["year": ["gte": 2023]]] ] ] ]]

let searchResponse = try await client.search( index: "books", body: query)

if let hits = searchResponse.hits?.hits { for hit in hits { if let source = hit.source { let book = try JSONDecoder().decode(Book.self, from: source) print("Found: \\(book.title) by \\(book.author)") } }}


विश्लेषण के लिए एकत्रीकरण

वर्ष के अनुसार पुस्तकों की संख्या गिनने का उदाहरण:

let aggregationQuery: [String: Any] = [    "size": 0,    "aggs": [        "by_year": [            "terms": ["field": "year", "size": 10]        ]    ]]

let aggResponse = try await client.search( index: "books", body: aggregationQuery)

if let buckets = aggResponse.aggregations?["by_year"] as? [String: Any], let bucketList = buckets["buckets"] as? [[String: Any]] { for bucket in bucketList { let year = bucket["key"] as? Int ?? 0 let count = bucket["doc_count"] as? Int ?? 0 print("\\(year): \\(count) books") }}


इंडेक्स प्रबंधन

सेटिंग्स के साथ इंडेक्स बनाना और हटाना:

let settings: [String: Any] = [    "settings": [        "number_of_shards": 2,        "number_of_replicas": 1    ],    "mappings": [        "pro                    

अनुशंसाएँ