OpenSearch’te Veri Modelleme: Text, Keyword ve Hibrit Alan Türlerinin Karşılaştırması

Mustafa Dikyar
3 min readFeb 21, 2025

--

OpenSearch’te veri modelleme yaparken, alan türlerinin doğru seçimi performans ve işlevsellik açısından büyük önem taşır.

Bu makalede, text, keyword ve hibrit(text + keyword) alan türlerinin özelliklerini, avantajlarını ve dezavantajlarını inceleyeceğiz.

Ayrıca, bu alan türlerini kullanırken dikkat edilmesi gereken ipuçlarını da makalenin akışı içinde ele alacağız.

1. test_index1 → field1 alanı text türünde

{
"mappings": {
"properties": {
"field1": {
"type": "text"
}
}
}
}

Özellikler:

  • field1, text türünde tanımlanmıştır.
  • Full-text search için uygundur.
  • Metin analiz edilerek saklanır (standart tokenizer, lowercase filter gibi işlemler uygulanır).
  • Kelime bazlı indexleme yapılır, yani bir kelimenin parçaları farklı şekillerde saklanabilir.

Dezavantajlar:

  • Filtreleme için uygun değildir, çünkü keyword tipi yok.
  • İndeksleme sırasında ek işlemler yapıldığı için veri boyutu büyüyebilir.
  • Exact match ve sıralama için uygun değildir, çünkü text alanları analiz edilir ve normalize edilir (örneğin, büyük-küçük harf duyarsız hale getirilir).

Sonuç:

  • Veri boyutu orta seviyede olacaktır.

İpucu: Eğer tam metin arama ihtiyacınız varsa text türünü kullanın. Ancak filtreleme veya sıralama yapmanız gerekiyorsa, keyword türünü veya hibrit bir yapıyı düşünün.

Ayrıca, analiz sürecinde oluşan token'ların sayısını azaltmak için custom analyzer’ları kullanabilirsiniz.

2. test_index2 → field2 alanı keyword türünde

{
"mappings": {
"properties": {
"field2": {
"type": "keyword"
}
}
}
}

Özellikler:

  • field2, keyword türünde tanımlanmıştır.
  • Full-text search yapmaya uygun değildir, çünkü analiz edilmez.
  • Filtreleme (exact match), sıralama ve gruplama (aggregations) için uygundur.
  • Büyük harf/küçük harf farkı korunur ve tüm değer tek parça olarak saklanır.

Dezavantajlar:

  • Metin bazlı aramalarda etkisizdir. Örneğin, “OpenSearch” kelimesi indekslendiyse, “open” kelimesiyle yapılan aramalar bu kaydı getirmez.

Sonuç:

  • Veri boyutu en küçük olacaktır.

İpucu: Exact match, sıralama veya gruplama ihtiyaçlarınız varsa keyword türünü kullanın. Ancak metin bazlı arama yapmanız gerekiyorsa, text türünü veya hibrit bir yapıyı tercih edin.

Ayrıca, keyword alanları için ignore_above parametresini kullanarak, belirli bir karakter uzunluğunu aşan değerlerin indekslenmesini engelleyebilirsiniz.

3. test_index3 → field3 hem text hem keyword olarak tanımlı

{
"field3": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}

Özellikler:

  • Hibrit bir alan tipi kullanılmıştır.
  • field3, hem text hem de keyword olarak indekslenir.
  • Full-text search için text kullanılabilir.
  • Exact match ve sıralama için keyword kullanılabilir.
  • "ignore_above": 256 ile 256 karakterden uzun veriler keyword olarak indekslenmez.

Dezavantajlar:

  • Ekstra depolama alanı ve dizinleme maliyeti getirir, çünkü aynı veri iki farklı formatta saklanır.

Sonuç:

  • Veri boyutu en büyük olacaktır.

İpucu: Hem full-text search hem de exact match ihtiyaçlarınız varsa hibrit yapıyı kullanın. Ancak veri boyutunu optimize etmek için, ignore_above parametresini dikkatlice ayarlayın.

Büyük veri setlerinde hibrit yapı kullanırken, depolama ve performans maliyetlerini göz önünde bulundurun.

📌 Özetle Farklar

📌 Sonuç

OpenSearch’te veri modelleme yaparken, alan türlerini seçerken ihtiyaçlarınızı iyi analiz etmelisiniz.

Full-text search için text, exact match ve sıralama için keyword, her ikisi için de hibrit yapıları kullanabilirsiniz. Ancak hibrit yapılar, depolama maliyetini artırabileceğinden, sadece ihtiyaç duyduğunuz durumlarda tercih edilmelidir.

  • Veri boyutunu optimize etmek için, text alanlarında custom analyzer’lar kullanabilir ve keyword alanlarında ignore_above parametresini ayarlayabilirsiniz.
  • Performans ve depolama dengesini göz önünde bulundurarak, büyük veri setlerinde düzenli testler yapın ve indeksleme stratejinizi buna göre optimize edin.

Bu makalede, OpenSearch’te kullanılan text, keyword ve hibrit alan türlerinin özelliklerini, avantajlarını ve dezavantajlarını detaylı bir şekilde inceledik.

--

--

No responses yet