2. ElasticSearch Kurulum ve C# Bağlantısı

1.KURULUM

ElasticSearch kurulumunu Windows üzerinde gerçekleştirmek için tamamlamamız gereken 2 adım  var.

  1. https://www.elastic.co/downloads/elasticsearch adresinden zip dosyasını bilgisayarınıza indirin.
  2. Zip dosyası içerisindeki dosyaları dışarıya aldıktan sonra elasticsearch.bat dosyasını çalıştırın.

İşlemleri tamamladıktan sonra varsayılan olarak 9200 portundan elasticsearch’e erişmemiz mümkün olacaktır.

2.ARAÇLAR

ElasticSearch’e Restful istekte bulunabiliriz. İstekte bulunurken buna yönelik olarak kullanabileceğimiz faydalı araçlardan biri Sense’tir.Sense’i chrome web mağazasından tarayıcınıza ekleyebilirsiniz.

3.Elastic Search ve C# bağlantisi

Net ortamında ElasticSearch ile çalışmak amacıyla kullanabileceğimiz çeşitli kütüphaneler bulunmakta. ElasticSearch.Netve Nest kütüphanelerini bu kütüphanelere örnek olarak verebiliriz.

Nest kütüphanesi kullanım olarak oldukça ideal bir kütüphanedir ve örnekte bu kütüphaneyi kullanmak istedim. Nest kütüphanesini Nuget Package Manager yardımıyla projenize ekleyebilirsiniz. 

 

Nest kütüphanesi ElasticSearch’e bağlantı kurulması,verinin indekslenmesi ve sorgu işlemlerini gerçekleştirebilmek için çeşitli metodları barındırır.

İşlemler kütüphane içerisinde bulunan ElasticClient sınıfı yardımıyla yapılır.

3.1 BAĞLANTI

ElasticSearch’e bağlantı için ConnectionSettings sınıfını kullanırız. ConnectionSettings sınıfının örneği, ElasticClient sınıfının yapıcı metoduna parametre olarak geçilir.

var connectionSettings=new ConnectionSettings(new Uri("http://localhost:9200"));
var elasticClient = new ElasticClient(connectionSettings);

Uri bilgisine ElasticSearch’ün barındırıldığı adres bilgisini veriyoruz. Artık elimizde işlem yapabilmek için elasticClient nesnesi hazır olarak bulunmakta.

3.2 VERİ AKTARIMI

Öncelikle ElasticSearch’e ürün eklemesi yapacağımız bir senaryomuz olsun. Ürünlerimiz ise Product tipinde tanımlandığını varsayalım.

public class ProductManager
{
    public static List<Product> GetProducts()
    {
        return new List<Product>
       {
           new Product{Id=1,ProductName="HP",Category="Laptop",UnitPrice=1500},
           new Product{Id=2,ProductName="Lenovo",Category="Laptop",UnitPrice=1500},
           new Product{Id=3,ProductName="Casper Nirvana",Category="Laptop",UnitPrice=1500},
           new Product{Id=4,ProductName="Samsung J7",Category="SmartPhone",UnitPrice=1500},
           new Product{Id=5,ProductName="IPhone5",Category="SmartPhone",UnitPrice=1500},

       };
    }
}


public class Product
{

    public int Id { get; set; }
    public string ProductName { get; set; }
    public string Category { get; set; }
    public decimal UnitPrice { get; set; }

}

Şimdi amacımız Product tipinde tanımlanan örnek verimizi ElasticSearch’e aktarmak.

ElasticSearch içerisinde verinin indekslenerek saklanan json formatında döküman olduğunu önceki yazılarda da belirtmiştik. Veri aktarımındaki ilk adım index oluşturma işlemidir.  Index oluştururken de bir index adına ve mapping tanımlamasına ihtiyaç duyarız.

var connectionSettings=new ConnectionSettings(new Uri("http://localhost:9200"));

var elasticClient = new ElasticClient(connectionSettings);
           
elasticClient.CreateIndex("product", p => p.AddMapping<Product>(m => m.MapFromAttributes()));

elasticClient.IndexMany(ProductManager.GetProducts(), "product");

CreateIndex metodu ile öncelikle bir index oluşturuyoruz. Metodun ilk parametresine index adını, ikinci parametresine ise Mapping’i veriyoruz. MapFromAttributes özelliği Product tipi için oluşturalacak mappingin ElasticSearch tarafından otomatik oluşturulmasını sağlar.

Index oluşturulduktan sonra, “product” adını verdiğimiz indexe Product tipindeki verilerimizi IndexMany metodu ile ekliyoruz.

Verileri ekledikten sonra Sense’i açarak datanın eklendiğini görebiliriz.