Elasticsearch .NET C# (.NET) के लिए: पूर्ण गाइड उदाहरण सहित
1. यह क्या है और इसकी आवश्यकता क्यों है
Elasticsearch .NET (NEST) C# और .NET प्लेटफॉर्म के अन्य भाषाओं में Elasticsearch सर्च इंजन के साथ काम करने के लिए आधिकारिक हाई-लेवल क्लाइंट है। यह लाइब्रेरी एक स्ट्रिक्टली टाइप किया गया API प्रदान करती है, जो Elasticsearch के सभी ऑपरेशन्स को करने की अनुमति देती है: डॉक्यूमेंट इंडेक्सेशन, सर्च, एग्रीगेशन, इंडेक्स और मैपिंग मैनेजमेंट, और यह सब .NET डेवलपर्स के लिए परिचित पैटर्न (LINQ, एसिंक्रोनस मेथड्स, System.Text.Json या Newtonsoft.Json के माध्यम से सीरियलाइजेशन) का उपयोग करता है।
इस लाइब्रेरी की आवश्यकता क्यों है? Elasticsearch एक शक्तिशाली डिस्ट्रीब्यूटेड फुल-टेक्स्ट सर्च और रियल-टाइम एनालिटिक्स सिस्टम है। यदि आपका C# एप्लिकेशन बड़ी मात्रा में डेटा (लॉग्स, प्रोडक्ट्स, डॉक्यूमेंट्स) पर जटिल सर्च करना चाहता है, एनालिटिकल क्वेरीज़ (एग्रीगेशन) प्रोसेस करना चाहता है, या प्रोग्रामेटिक रूप से Elasticsearch क्लस्टर को मैनेज करना चाहता है, तो NEST सबसे अच्छा विकल्प है। यह HTTP रिक्वेस्ट और JSON सीरियलाइजेशन के लो-लेवल डिटेल्स को छुपाता है, और फ्लुएंट इंटरफेस और स्ट्रिक्ट टाइपिंग प्रदान करता है।
यह लाइब्रेरी Elasticsearch के सभी वर्जन 6.x से शुरू होने वाले संस्करणों को सपोर्ट करती है, और .NET Standard 2.0 के साथ संगत है, जिससे आप इसे .NET Framework 4.6.1+, .NET Core 2.0+ और .NET 5/6/7/8/9 प्रोजेक्ट्स में उपयोग कर सकते हैं। NEST को Elastic कंपनी और कम्युनिटी द्वारा सक्रिय रूप से विकसित किया जाता है, और इसकी विस्तृत डॉक्यूमेंटेशन और ढेरों उदाहरण उपलब्ध हैं।
2. इंस्टॉलेशन
इंस्टॉलेशन NuGet Package Manager के माध्यम से किया जाता है। निम्नलिखित कमांड्स में से किसी एक का उपयोग करें:
// .NET CLI के माध्यम से
dotnet add package NEST
// Package Manager Console के माध्यम से
Install-Package NEST
// या NuGet UI के माध्यम से: "NEST" खोजें और नवीनतम स्थिर संस्करण इंस्टॉल करें
आप लो-लेवल क्लाइंट Elasticsearch.Net भी इंस्टॉल कर सकते हैं, लेकिन NEST इसे अपने डिपेंडेंसी के रूप में शामिल करता है।
3. त्वरित शुरुआत — न्यूनतम कार्यशील उदाहरण
एक .NET कंसोल एप्लिकेशन बनाएं और using-डायरेक्टिव्स जोड़ें:
using System;
using System.Threading.Tasks;
using Nest;
using static System.Console;
public class Program
{
public static async Task Main(string[] args)
{
// 1. कनेक्शन सेटिंग्स
var settings = new ConnectionSettings(new Uri("http://localhost:9200"))
.DefaultIndex("my_index");
var client = new ElasticClient(settings);
// 2. डेटा मॉडल परिभाषित करें
var document = new Product
{
Id = 1,
Name = "लैपटॉप",
Description = "शक्तिशाली गेमिंग लैपटॉप",
Price = 1500.99
};
// 3. डॉक्यूमेंट इंडेक्स करें
var indexResponse = await client.IndexAsync(document, idx => idx.Index("products"));
if (indexResponse.IsValid)
WriteLine($"डॉक्यूमेंट इंडेक्स हो गया: {indexResponse.Id}");
// 4. डॉक्यूमेंट खोजें
var searchResponse = await client.SearchAsync(s => s
.Index("products")
.Query(q => q
.Match(m => m
.Field(f => f.Name)
.Query("लैपटॉप")
)
)
);
foreach (var hit in searchResponse.Hits)
{
WriteLine($"मिला: {hit.Source.Name} - {hit.Source.Price:C}");
}
}
}
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public string Description { get; set; }
public double Price { get; set; }
}
4. मुख्य मेथड्स/फंक्शन्स/क्लासेस
4.1. ElasticClient.IndexAsync
सिग्नेचर: Task<IndexResponse> IndexAsync<T>(T document, Func<IndexDescriptor<T>, IIndexRequest<T>> selector = null, CancellationToken ct = default)
यह क्या करता है: निर्दिष्ट इंडेक्स में एक डॉक्यूमेंट को इंडेक्स (जोड़ता या अपडेट) करता है। यदि उसी आईडी वाला डॉक्यूमेंट पहले से मौजूद है, तो वह अपडेट हो जाता है; अन्यथा, एक नया डॉक्यूमेंट बनाया जाता है।