OpenSearch’te Veri Modelleme: Text, Keyword ve Hibrit Alan Türlerinin Karşılaştırması
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 dekeyword
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 verilerkeyword
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 vekeyword
alanlarındaignore_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.
Daha fazla detay için resmi dokümanları da inceleyebilirsiniz.