Elasticsearch #3: C# ile Derinlemesine Entegrasyon

Cenker Kumlucalı
2 min readAug 24, 2023

--

Merhaba! Elasticsearch, ölçeklenebilirlik ve gerçek zamanlı arama yetenekleriyle bilinen harika bir arama ve analiz motorudur. Bu yazımızda, Elasticsearch ile C# entegrasyonuna odaklanıyoruz.

Başlangıç: Elasticsearch.Net ve NEST

Elasticsearch ile C# arasında çalışmak için iki ana kütüphane bulunmaktadır: Elasticsearch.Net (düşük seviyeli kütüphane) ve NEST (yüksek seviyeli kütüphane). Başlamadan önce, projenize bu iki paketi NuGet üzerinden eklemeniz gerekmektedir.

Basit bir C# Uygulaması

İlk olarak, bir Product sınıfı oluşturalım:

public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public double Price { get; set; }
public string Description { get; set; }
}

Bağlantı Ayarları

Özellikle çok sayıda yapılandırma ve bağlantı dizesi kullanıyorsanız, bu bilgileri doğrudan kodda saklamak yerine appsettings.json gibi bir yapılandırma dosyasında saklamak daha mantıklıdır.

appsettings.json:

{
"ElasticsearchSettings": {
"Uri": "http://localhost:9200"
}
}

Bağlantıyı kurarken bu yapılandırmayı kullanabilirsiniz:

var elasticUri = Configuration["ElasticsearchSettings:Uri"];

var settings = new ConnectionSettings(new Uri(elasticUri))
.DefaultIndex("products");

var client = new ElasticClient(settings);

İndeks Oluşturma

Öncelikle, ürünlerimizi saklamak için bir indeks oluşturmamız gerekiyor:

if (!client.Indices.Exists("products").Exists)
{
client.Indices.Create("products", index => index
.Map<Product>(x => x.AutoMap())
);
}

Ekleme İşlemi

Bir Product nesnesi oluşturup Elasticsearch'a ekleyelim:

var newProduct = new Product
{
Id = 1,
Name = "Elasticsearch Guide",
Price = 49.99,
Description = "Complete guide for Elasticsearch with C#"
};

var response = client.IndexDocument(newProduct);

Güncelleme İşlemi

Mevcut bir ürünü güncelleyelim:

newProduct.Price = 39.99;

var response = client.Update<Product>(newProduct.Id, u => u
.Doc(newProduct)
);

Silme İşlemi

Bir ürünü indeksten silmek de oldukça basittir:

var response = client.Delete<Product>(newProduct.Id);

Arama İşlemi

Ürünler arasında basit bir arama yapalım:

var searchResponse = client.Search<Product>(s => s
.From(0)
.Size(10)
.Query(q => q
.Match(m => m
.Field(f => f.Name)
.Query("Elasticsearch")
)
)
);

var products = searchResponse.Documents.ToList();

Sonuç

Elasticsearch ile C# entegrasyonu, geniş veri setleri üzerinde hızlı sorgulama ve analiz yeteneklerini C# projelerinize entegre edebilmenizi sağlar. Bu makalede temel CRUD işlemleri üzerinde durduk, ancak Elasticsearch’ın sunduğu özellikler çok daha geniş kapsamlıdır. Gelecekteki yazılarımızda bu özellikleri daha detaylı inceleyeceğiz.

--

--

No responses yet