Elasticsearch C# (.NET) क्लाइंट: NEST और Elastic.Clients.Elasticsearch

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

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

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

Elasticsearch C# (.NET) क्लाइंट: NEST और Elastic.Clients.Elasticsearch

Elasticsearch एक शक्तिशाली डिस्ट्रीब्यूटेड सर्च और एनालिटिक्स सिस्टम है, जिसका उपयोग फुल-टेक्स्ट सर्च, लॉगिंग, मॉनिटरिंग और डेटा एनालिसिस के लिए किया जाता है। C# (.NET) एप्लिकेशन से Elasticsearch के साथ काम करने के लिए दो मुख्य आधिकारिक क्लाइंट उपलब्ध हैं: NEST (हाई-लेवल, fluent API के साथ) और Elastic.Clients.Elasticsearch (नया, लो-लेवल, Elasticsearch 8.x से शुरू)। इस लेख में हम दोनों तरीकों, इंस्टॉलेशन, बुनियादी ऑपरेशन और कोड उदाहरणों पर विस्तार से चर्चा करेंगे।

1. .NET के लिए Elasticsearch क्लाइंट क्या है?

Elasticsearch RESTful API प्रदान करता है, लेकिन C# में सीधे HTTP रिक्वेस्ट के साथ काम करना असुविधाजनक है। आधिकारिक क्लाइंट इस समस्या का समाधान करते हैं:

  • NEST — पुराना लेकिन विश्वसनीय हाई-लेवल क्लाइंट। यह स्ट्रिक्टली टाइप किए गए क्वेरी, POCO क्लासेस का मैपिंग और fluent इंटरफ़ेस प्रदान करता है। .NET Framework और .NET Core 3.1 प्रोजेक्ट्स के लिए अनुशंसित।
  • Elastic.Clients.Elasticsearch — नया क्लाइंट (Elasticsearch 8.x से)। हल्का, एसिंक्रोनस, .NET 6+ को सपोर्ट करता है। System.Text.Json का उपयोग करता है और इसे अतिरिक्त डिपेंडेंसी की आवश्यकता नहीं है।

2. लाइब्रेरीज़ की इंस्टॉलेशन

इंस्टॉलेशन NuGet के माध्यम से की जाती है। NEST के लिए:

dotnet add package NEST

नए क्लाइंट के लिए:

dotnet add package Elastic.Clients.Elasticsearch

3. Elasticsearch से कनेक्शन

NEST का उपयोग करके कनेक्शन का उदाहरण:

var settings = new ConnectionSettings(new Uri("http://localhost:9200"))
    .DefaultIndex("my_index");
var client = new ElasticClient(settings);

Elastic.Clients.Elasticsearch का उपयोग करके कनेक्शन का उदाहरण:

var settings = new ElasticsearchClientSettings(new Uri("http://localhost:9200"));
var client = new ElasticsearchClient(settings);

4. डेटा मॉडल को परिभाषित करना

डॉक्यूमेंट के साथ काम करने के लिए POCO क्लास बनाएं:

public class Product
{
    public int Id { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public decimal Price { get; set; }
    public DateTime CreatedAt { get; set; }
}

5. CRUD ऑपरेशन (क्रिएट, रीड, अपडेट, डिलीट)

5.1. डॉक्यूमेंट इंडेक्स करना (क्रिएट/अपडेट)

NEST:

var product = new Product { Id = 1, Name = "लैपटॉप", Price = 75000 };
var response = await client.IndexAsync(product, idx => idx.Index("products"));

Elastic.Clients.Elasticsearch:

var product = new Product { Id = 1, Name = "लैपटॉप", Price = 75000 };
var response = await client.IndexAsync(product, "products", 1);

5.2. ID द्वारा डॉक्यूमेंट प्राप्त करना

NEST:

var response = await client.GetAsync<Product>(1, g => g.Index("products"));
var product = response.Source;

Elastic.Clients.Elasticsearch:

var response = await client.GetAsync<Product>("products", 1);
var product = response.Source;

5.3. डॉक्यूमेंट अपडेट करना

NEST:

var response = await client.UpdateAsync<Product>(1, u => u
    .Index("products")
    .Doc(new Product { Name = "HP लैपटॉप", Price = 80000 }));

Elastic.Clients.Elasticsearch:

var response = await client.UpdateAsync<Product>("products", 1, u => u
    .Doc(new Product { Name = "HP लैपटॉप", Price = 80000 }));

5.4. डॉक्यूमेंट डिलीट करना

NEST:

var response = await client.DeleteAsync<Product>(1, d => d.Index("products"));

Elastic.Clients.Elasticsearch:

var response = await client.DeleteAsync("products", 1);

अनुशंसाएँ