Elasticsearch Index Yönetimi

Elasticsearch Index Nedir ?

Elasticsearc’de dökümanları tutan yapılar, dökümanların logical gruplanıp store edildiği yapılar, indexlerdir demiştik. Elasticsearch index kavramının çoğul haline de indice denir. Bir indexte store edilen dökümanlar field ve value’dan oluşan json objeleridir. Örnek bir doküman ise aşağıdaki gibidir;

{
  “name”: “veritabaniegitimleri.com”,
“country”: “Turkey”
}  

Bu döküman elastic üzerinde bir indexte saklandığı zaman ise aşağıdaki gibi görünür. Döküman websites adı verilen bir indexte saklanır ve çeşitli metadata bilgileri eklenerek _ ile başlayan metadata fiealdları ile birlikte indexlenir. 

Elasticsearch index Document meta fields
Document meta fields

Aşağıda index yönetimi ile ilgili komutlar bulunmaktadır, bu komutlarla bir index create edilebilir, delete edilebilir, index open/close mod’a alınabilir ve bu gibi bir çok yönetimsel işlem gerçekleştirilebilir.

Create Index :

İndex oluşturabilmek için ilgili kullanıcının create_index veya manage_index yetkilerine sahip olması gerekir. Bir index create etmek için aşağıdaki komutlar kullanılır.

PUT /my-index-000001
veya
curl -X PUT -u elastic:$ESPASS “localhost:9200/my-index-000001?pretty”

  • İndex isimleri küçük harflerden oluşmalıdır.
  • \, /, *, ?, “, <, >, |, ` ` (space character), ,, # gibi özel karakterler içeremez.
  • -, _ , + karakarleri ile başlayamaz.
  • . ve .. olamaz.
  • 255 byte’dan uzun olamaz.

Index oluşturulurken komutun içerisinde index’e ait ayarlar ve mapping alanları da belirtilebilir. Mapping bir dökümanın fieald’larının nasıl depolanacağının belirlenmesi işlemidir. Default olarak elasticsearch otomatik olarak mapping işlemini gerçekleştirir. Örneğin shard ve replica sayılarını belirterek bir index oluşturmak için aş komut kullanılabilir;

PUT /my-index-000001

“settings”:
{
“number_of_shards”: 3,
“number_of_replicas”: 2
}
}

Mapping tanımı belirterek index create etmek için aşağıdaki komut kullanılır;

PUT /test
{
  “settings”: {
    “number_of_shards”: 1
  },
  “mappings”: {
    “properties”: {
      “field1”: { “type”: “text” }
    }
  }
}

Delete İndex

Bir indexi silmek için aşağıdaki komut kullanılabilir. Komutu çalıştıracak kullanıcının delete_index veya manage index yetkisinin olması gerekir. Bir index silindiğinde içerisindeki dökümanlar, shardlar ve metadatası da silinir. Ancak data views, dashboard gibi kibana komponentleri silinmezler. Bir data stream tarafından yazma işlemi yapılan index o anda silinemez. Data stream rollover edilmeli ve yeni bir indexe yazarken eski index silinebilir.

DELETE /my-index-000001
veya
curl -X DELETE -u elastic:$ESPASS “localhost:9200/my-index-000001?pretty”

Get Index 

Bir index hakkında metadata bilgisinin alınmasını sağlar. Komutu çalıştıracak kullanıcının view_index_metadata yada manage index yetkisine sahip olması gerekir.

GET /my-index-000001

Exist API

Bir index’in, datastream’in veya alias’ın var olup olmadığını kontrol etmek için aşağıdaki komut kullanılır. Mevcut ise 200 – OK mesajı cevap olarak döner. 

HEAD my-index-000001
veya
curl -I -u elastic:$ESPASS “localhost:9200/my-data-stream?pretty”

Close – Open Index

Bir index kapatıldığında read/write işlemleri işin bloklanır. Bu yüzden doküman indexlenmesi ve search operasyonlarına izin verilmez. İndex create edildiğinde default olarak open index olarak gelir ve read/write işlemleri gerçekleştirilebilir. Indexi kapatmak disk kullanımında yer açılmasını da sağlar.

POST /my-index-000001/_close
veya
curl -X POST -u elastic:$ESPASS “localhost:9200/my-index-000001/_close?pretty”

Kapatılan bir indexi tekrar açmak için ise 

POST /my-index-000001/_open
veya
curl -X POST -u elastic:$ESPASS “localhost:9200/my-index-000001/_open?pretty” 

Bir sonraki yazıda, elasticsearch’te index shrink ve split konularına değineceğiz. Elasticsearch konusunda diğer içeriklere https://www.veritabaniegitimleri.com/category/dokuman/nosql/elasticsearch/ linkinden erişebilirsiniz. Video derslere ise https://youtube.com/@veritabaniegitimleri youtube kanalımızdan erişebilirsiniz. İyi Çalışmalar

Veysel YUKSEL
Latest posts by Veysel YUKSEL (see all)

Veysel YUKSEL

RDBMS ve NoSQL veri tabanı yönetimi ve Big Data teknolojileri.

You may also like...

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir