Merhaba;

“Elasticsearch” ile ilgili ilk yazıma https://www.linkedin.com/pulse/elasticsearch-asiye-yigit/  adresinden ulaşabilirsiniz. Bugün, bu yazı dizimin ikincisini sizlere aktarıyor olacağım.

Kısa bir hatırlatma yapmam gerekirse, ilk yazımda “elasticsearch” ün ne olduğunu, ne amaçla kullanıldığını, nasıl bir mimaride çalıştığını aktarmıştım. En son Windows sisteme “elasticsearch” ve “kibana” kurulumlarını yaparak sırasıyla, http://localhost:9200/ ve http://localhost:5601/ adreslerinden ortamlarımıza ulaşmıştık.

“Elastic Cloud” üzerinde de herhangi bir kredi kart bilgisi vermeden 14 gün  oluşturduğunuz ortamları ücretsiz olarak kullanabilirsiniz. “Elastic Cloud” üzerinde ben Azure ortamında yapıyı oluşturdum. “Elasticsearch”, “kibana” ve “APM” yapısını sizler için otomatik olarak oluşturuyor. Bu yapıyı daha sonra kurduğum için sürümü daha güncel (Şekil 1. ve Şekil 2.).

No alt text provided for this image

Şekil 1. “Elastic Cloud” üzerinde olan ortam özeti.

No alt text provided for this image

Şekil 2. “Elastic Cloud” üzerinde olan “instances” bilgileri.

Şekil 1.’de gördüğünüz “Elasticsearch”, “Kibana”ve “APM” ortamlarınıza, “Launch” kelimesini tıklayarak ulaşabilirsiniz (Şekil 3., Şekil 4., Şekil 5).

No alt text provided for this image

Şekil 3. “Elastic Cloud” üzerinde “elasticsearch” ortamı.

No alt text provided for this image

Şekil 4. “Elastic Cloud” üzerinde “kibana” ortamı.

No alt text provided for this image

Şekil 5. “Elastic Cloud” üzerinde “APM” ortamı.

“Elasticsearch” de veriyi tutan birimler, “node” olarak ifade edilmektedir. “Elasticsearch”ün veriyi tutan her bir parçası (“instance”), “node” olarak düşünülmelidir. “Node”u, fiziksel bir makine gibi düşünmeyin. Bir fiziksel makinede birden fazla “node” çalıştırabilirsiniz. Üretim ortamında elbette her bir “node” kendisine adanmış fiziksel bir sistem, sanal bir sistem veya bir konteyner olmalıdır. Fakat ürünü öğrenmek amaçlı, tek bir fiziksel sistem üzerinde birden fazla “node” yapılandırabilirsiniz. Her “node”, “cluster” olarak isimlendirilen bir yapıya ait olmalıdır. Farklı amaçlarla “cluster” yapılarınızı birbirinden ayırabilirsiniz. Örneğin, e-ticaret uygulamanız için bir “cluster”, “APM” için farklı bir “cluster” kullanabilirsiniz. Veri, “cluster” içinde döküman olarak tutulur. Dökümanlar, JSON nesneleridir. Her döküman indeks içinde tutulur. Benzer karakteristiklere sahip, lojiksel olarak birbirleriyle bağlantıları olan dökümanlar aynı indeks içinde tutulur.

“Kibana” üzerinden “elasticsearch” e ilk isteğimizi gönderelim. “Kibana” üzerinden solda bulunan ikonlardan “Dev Tools” seçerek, mevcut “cluster”ın sağlık durumuna bakalım. “GET /_cluster/health” cümlesinde, “_cluster” ulaşmak istediğimiz API, “health” ise bu API içinde olan komutu göstermektedir. Sonucunu Şekil 6. (Windows makinem) ve Şekil 7. De (Elastic Cloud) görebiliriz.

No alt text provided for this image

Şekil 6. Windows sistem üzerinde “kibana” konsol üzerinden “GET /_cluster/health” komut çıktısı.

No alt text provided for this image

Şekil 7. “Elastic Cloud” üzerinde “kibana” konsol üzerinden “GET /_cluster/health” komut çıktısı.

“Elastic Cloud” bana daha çok kaynak verdiği için _cat API’sinden “node” larla ilgili detaylı bilgiyi bu yapı üzerinden ekliyorum (Şekil 8.).

No alt text provided for this image

Şekil 8. _cat API üzerinden “node” bilgileri.

Mevcut indeks yapımıza “GET /_cat/indices?v” komutuyla bakabiliriz (Şekil 9.).

No alt text provided for this image

Şekil 9. Mevcut indeks yapısı.

Windows sistem üzerinde hatırlarsanız tek “node” vardı. Önceki yazımda “sharding” yapısından ve “replica” kavramlarından bahsetmiştim. Windows sistemi üzerinde mevcut “sharding” yapısını “GET /_act/shardings?v” ile görebiliriz (Şekil 10.).

No alt text provided for this image

Şekil 10. Mevcut windows sistemde “sharding” yapısı.

Şekil 10.’da göreceğiniz gibi,  iki tane primary “shard” mevcut. Herhangi bir replica yok (prirep kolonunda sadece p harfi var). “PUT pages” komutu ile yeni bir indeks oluşturdum ve tekrar “sharding” yapısına baktım (Şekil 11.). Dikkat ederseniz, pages için “primary shard” aktif ve başlatılmış durumda. Oysa, replica “UNASSIGNED” durumda. Neden? Çünkü sistem üzerinde tek “node” vardı ve replikayı, “primary shard” ile aynı “node” üzerine yüklemez. Anladığınız gibi, varsayılan konfigürasyon bir “primary shard” ve bir “replica shard” dır. Yani siz bir indeks eklediğinizde iki tane “shard” eklenir. Fakat mevcut yapıda, replikayı atayacağı bir “node” mevcut değildir. Bu haldeyken, “cluster” ın sağlık durumuna bakalım.

No alt text provided for this image

Şekil 11. “pages” indeks eklendikten sonra, “sharding” yapısı.

“Cluster” ın sağlık durumu, “green” den “yellow” durumuna geçti (Şekil 12.).

No alt text provided for this image

Şekil 12. “pages” için tek “node” olduğu için replika eklenemediğinden “cluster” ın sağlık durumu, “green” den “yellow”a dönüştü.

Şimdi şöyle bir şey yapacağım. Elbette ortamım üretim ortamı değil. Test ortamı. Bu nedenle bu şekilde yapıyorum. Windows sistemde, “elasticsearch”ü farklı bir dizinde tekrar açtım. “elasticsearch.yml” dosyasında, “node.name: node-2” değişikliğini yaptım ve “elasticsearch” batch dosyasını çalıştırdım. Bu adımdan sonra, tekrar “sharding” yapısına ve “cluster” ın sağlık durumuna bakalım. Her bir “primary shard” ın bir “replica shard”ı olduğunu görüyoruz ve “cluster” ın sağlık durumu da “yellow” dan tekrar “green” durumuna geçti (Şekil 13.).

No alt text provided for this image
No alt text provided for this image

Şekil 13. Indeks yapısı ve “cluster” ın sağlık durumu.

Şekil 13. İkinci bir “node” eklendikten sonra “cluster” ve “sharding” yapısı.

Oluşturduğumuz indeksi slime işlemi çok kolaydır. “DELETE /pages” komutu ile sildikten sonra, tekrar sharding yapısına baktığımızda, “pages”in olmadığını görüyoruz (Şekil 14.).

No alt text provided for this image

Şekil 14: “pages” indeksinin silinmesi.

Şimdi bir dökümanın indekslenmesi nasıl yapılıyor görelim (Şekil 15.). İlk şekilde çalıştırdığımız komut ile “products” indeksinin eklenmesini görüyoruz. Daha sonra olan şekil “sharding” yapısını gösteriyor. “products” indeksinin “primary shard” ve “replica shard”a sahip olduğunu görüyoruz. Ardından GET ile dökümanı görüntülüyoruz.

No alt text provided for this image
No alt text provided for this image
No alt text provided for this image

Şekil 15. Döküman indeksleme adımları.

Bu ikinci bölümde “kibana” konsol üzerinden basit Temel komutlar çalıştırmayı gördük. “Elastic Cloud” üzerinde 14 günlük ücretsiz “kibana”, “elasticserach” ve “APM” yapısını otomatik oluşturabileceğimizi ve üzerinde testlerimizi yapabileceğimizi gördük. Kendis desktop sistemimize kurduğumuz “elasticsearch” yapısına ikinci “node” eklemeyi gözlemledik. Üçüncü bölümde daha detaya giriyor olacağız.

Asiye Yiğit – 8 Aralık 2019 Pazar

Kaynakça:

“Complete Guide to Elasticsearch” – Bo Andersen