.Net Core ile Elastic Search Kullanımı

Merhaba,

Bu yazımda .Net Core ile Elastic Search nasıl kullanılır ona değineceğim.

Elastic Search Nedir ?

ElasticSearch, büyük veriler üzerinde sorgulama, içerik arama, veri analizi gibi işlemlerde daha çok performanstan dolayı tercih edilen bir search engine’dir. ElasticSearch verileri JSON tipinde saklar.

Elastic Search Nasıl Implemente Edilir ?

.Net tarafında NEST (.NET client for Elasticsearch) kütüphanesi ile implemente edilebilmektedir.

Elastic Search Kurulumu

Windows üzerinde Elasticsearch v7.7.0 indirelim.

https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.7.0-windows-x86_64.zip

Çalıştırma

-> cd elasticsearch-7.7.0
-> .\bin\elasticsearch.bat

Yukarıdaki komutu çalıştırdığımda X-Pack ile ilgili bir exception aldım,

bunu engellemek adına ;

-> cd config

şeklinde config klasörü içerisine girip içindeki elasticsearch.yml dosyasını açıp aşağıdaki konfigürasyonu yaptıktan sonra devam edelim.

xpack.ml.enabled : false

Sizde böyle bir hata vermezse direkt devam edebilirsiniz.

http://localhost:9200 üzerinden çalıştıralım.

Kibana Nedir ?

Kibana, Elasticsearch için açık kaynaklı bir veri görselleştirme panosudur. Bir Elasticsearch kümesinde dizine eklenen içeriğin üstünde görselleştirme özellikleri sağlar. Kullanıcılar, büyük hacimli verilerin üstünde çubuk, çizgi ve dağılım grafikleri veya pasta grafikler ve haritalar oluşturabilir. Wikipedia (İngilizce)

Kibana Kurulumu

Windows üzerinde kibana v7.7.0 indirelim.

https://artifacts.elastic.co/downloads/kibana/kibana-7.7.0-windows-x86_64.zip

Çalıştırma

-> cd kibana-7.7.0-windows-x86_64
-> .\bin\kibana.bat

http://localhost:5601 üzerinden çalıştıralım.

.Net Core API

dotnet new webapi -o ElasticSearchExample

komutu ile .net core api oluşturalım.

ItemsController oluşturalım.

ElasticClient ve ConnectionSettings kullanımı için NEST kütüphanesini import ederek devam ediyoruz. Parça parça incelemeye başlayalım.

ConnectionSettings için;

Elastic search’ ün çalıştığı uri,

Indexleme yapacağı default index adı,

_id değişkenine objenin hangi property’sini yazacağını belirtiyoruz. Ve client nesnesini yaratıyoruz.

Ctor kısmında client üzerinde indeks yaratmadan ;

daha önceden esearchitems adında bir indeks var mı diye kontrol etmemiz gerekiyor.

Indeks yok ise esearchitems adında Item tipinde objeye sahip olacak bir indeks yaratıyoruz.

Oluşan indeksi otomatik olarak Kibana arayüzünden görebiliyoruz.

Daha sonra bu indekste tutulmasını istediğimiz data listesini Bulk

metodu sayesinde Bulk API’ ye request olarak yolluyoruz.

Bilgi

Elasticsearch sürüm 7'de indeks işlemleriyle ilgili yöntemler IndicesNamespace’e taşınmıştır.

Burada artık http://localhost:9200/esearchitems/_search url’i bize aşağıdaki gibi elastic search çıktısını verecek.

Peki biz bu API’yi kullanarak custom işlemler yapabilir miyiz ?

ElasticClient.Search metodu ile indekslenen data üzerinde filtreleme yapıp response üretebiliyoruz.

Yukarıdaki örnekte Price property’sinin değeri 1'den büyük olan nesnelerin nasıl filtrelendiğini görebiliriz.

Örnek kodları github hesabımdan görebilirsiniz.

https://github.com/gizemcifguvercin/ElasticSearchExample

Kaynak : https://www.elastic.co/

İyi Çalışmalar :)

Software Engineer @hepsiburada

Software Engineer @hepsiburada