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.).
Şekil 1. “Elastic Cloud” üzerinde olan ortam özeti.
Ş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).
Şekil 3. “Elastic Cloud” üzerinde “elasticsearch” ortamı.
Şekil 4. “Elastic Cloud” üzerinde “kibana” ortamı.
Ş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.
Şekil 6. Windows sistem üzerinde “kibana” konsol üzerinden “GET /_cluster/health” komut çıktısı.
Ş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.).
Şekil 8. _cat API üzerinden “node” bilgileri.
Mevcut indeks yapımıza “GET /_cat/indices?v” komutuyla bakabiliriz (Şekil 9.).
Ş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.).
Ş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.
Şekil 11. “pages” indeks eklendikten sonra, “sharding” yapısı.
“Cluster” ın sağlık durumu, “green” den “yellow” durumuna geçti (Şekil 12.).
Ş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.).
Ş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.).
Ş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.
Ş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
Leave A Comment