SentiLOG

Blog

Elasticsearch İlişkisel Veri Tabanı Terim Karşlıkları

Elasticsearch İlişkisel Veri Tabanı Terim Karşlıkları

Mysql, Postgresql benzeri RDBMs dünyasında çalışmaya alışanlar için Elasticsearch te hangi terimin tam karşılığı olmasa da RDBMs dünyasında neye karşılık geldiği biraz karışık gelebilir. Bu nedenle kısaca neyin ne olduğu konusuna biraz değinelim.

Veri tabanı (Database) = Indices, index
RDBMs’te bir sunucuda birden fazla veri tabanı yartabildiğiniz gibi, Elasticsearch’te birden fazla Indice yaratabiliyorsunuz.Yaptığınız işlemler index bazında oluyor, sunuculadaki tüm indexleri listelemek için:

curl 'localhost:9200/_cat/indices?v'

komutu kullanabilirsiniz. Sorgu yaparken RDBMs’te veri tabanını belirttiğiniz şekilde elasticsearh’te de hangi index üzerinde sorgu yapacağınız belirtiyorsunuz.

Tüm indexleri sorgulamak için:

 /_search

SentiLOG ismindeki indexi sorugulamak için:

/SentiLOG/search_

Birden fazla index sorgulamak için (sentistat ve sentilog isminde )

 /sentistat,sentilog/search_

Bunun yanında * kullanarak birden fazla indexe sorgu gönderebilirsiniz. Indexleri ay gün formatında tuttuğumuz düşünürsek (2016-08-01,2016-08-02 vb) tüm ay için (2016-08) aşağıdaki sorgu kullanılabilir.

 /2016-08*/search_

Tablo (table) = Tip (type)

Elasticsearch’te index altında yarattığınız her bir belgenin bir belge tipi olmak durumunda. Bunun veri tabanı yapısındaki tablolara benzetmek mümkün. Daha anaşılır olması açısından log örneği üzerinden açıklar isek web sunucusu ve dns sunucusu  kaynakları için web ve dns isminda iki farklı belge tipi oluşturup tek bir index altında kayıtları tutabiliriz. Indeximizin yıl-ay-gün formatında olduğunda 2016-08-21 indexinde web type’ına ait belgeleri sorgulamak için:

 /2016-08-21/web/search_

sorgusu kullanılabilir.

Sütün (rows) = Belgeler (Documents)

Bu ana kadar bir kaç kez belgenin adından bahsetmemize rağmen belgenin ne olduğunu söylemedik.  Belge dediğimiz şey aslında bir json objesi. Elasticsearch her bir json objesini indexlerken belge için tekil olan bir _id field(alan) metadata alanı atamakta. Örnek belge kullanci listesi için üç adet alan(field) içeriyor.

{
"Adi": "test1",
"Soyadi": "soyadi1",
"Telefon": "3573403232"
}
Alan(Field) = Kolon (Column)

Üst başlıkta açıklamış olduk ama tekrar üstünden geçelim, belge içindeki key value olarak tutulan kısımlar alan olarak isimlendiriliyor. Yukarıdaki örnek Adi, Soyadi, ve Telefon olarak üç alana sahip.