Bir projeye arama katmanı eklerken karşınıza çıkan ilk soru artık "hangi arama motoru" değil, "OpenSearch mü Elasticsearch mü" oluyor. İkisi de aynı kökten gelir, aynı Lucene kütüphanesini kullanır, aynı REST API mantığıyla çalışır ve ilk bakışta neredeyse ayırt edilemez. Ama lisansları, yönetişimleri, hangi özelliğin ücretsiz geldiği ve istemci kütüphanelerinin uyumluluğu konusunda birbirinden ayrılmış durumdalar — ve bu farklar, projenin ortasında fark edildiğinde pahalıya patlıyor.
Bu yazıda ikisi arasındaki ayrımı somut biçimde ele alacağım: ayrılık nasıl oldu, lisans farkı bugün pratikte ne anlama geliyor, hangi özellik hangi tarafta ücretsiz, API ve istemci uyumluluğu nerede kırılıyor, vektör arama tarafında durum ne ve en önemlisi hangi projede hangisini seçmelisiniz. Sonunda geçiş yollarını ve o geçişte karşılaşacağınız somut tuzakları da bulacaksınız. Kurulum tarafına odaklanmak isterseniz Elasticsearch kurulumu yazısı adım adım anlatıyor.
Ayrılık Nasıl Oldu#
Elasticsearch uzun yıllar Apache 2.0 lisansıyla dağıtıldı. 2021 başında Elastic, lisansı değiştirerek Apache 2.0'ı bıraktı ve kaynak kodunu SSPL ile kendi özel lisansı arasında ikili bir modele taşıdı. Gerekçesi açıktı: bulut sağlayıcıları Elasticsearch'ü yönetilen servis olarak satıyor, ürünü geliştiren şirkete ise bu gelirden pay düşmüyordu. Yeni lisans, tam da bu kullanımı kısıtlıyordu.
AWS buna, değişiklikten hemen önceki son Apache 2.0 sürümü olan Elasticsearch 7.10.2'yi ve Kibana'yı çatallayarak (fork) cevap verdi. Ortaya çıkan proje OpenSearch adını aldı, Apache 2.0 lisansıyla dağıtıldı ve Kibana'nın çatalı da OpenSearch Dashboards oldu. İlk kararlı sürüm 2021 ortasında yayımlandı.
Hikâyenin devamı ilk beklentileri kısmen boşa çıkardı. Elastic, 2024'te Elasticsearch ve Kibana için AGPL seçeneğini de ekleyerek gerçek anlamda açık kaynak bir lisans yolunu geri getirdi. Aynı yıl OpenSearch tarafı da AWS'nin tek başına yönettiği bir proje olmaktan çıkıp Linux Foundation çatısı altında bağımsız bir vakfa taşındı. Yani bugün her iki proje de açık kaynak lisanslı ve her ikisinin de kurumsal destekçisi var; ayrım, "biri açık biri kapalı" şeklindeki basit tabloya artık uymuyor.
Buradan çıkan pratik sonuç şudur: seçiminizi 2021'de yazılmış blog yazılarına göre yapmayın. İki projenin de kod tabanı beş yıldır bağımsız evrildi ve bugün gerçek farklar lisans metninde değil, özellik setinde, API uyumluluğunda ve ekosistemde.
Lisans ve Yönetişim Farkı Bugün Ne Anlama Geliyor#
| Konu | Elasticsearch | OpenSearch |
|---|---|---|
| Lisans | AGPL / ELv2 / SSPL seçenekli | Apache 2.0 |
| Yönetişim | Elastic (tek şirket) | Bağımsız vakıf, çok paydaşlı |
| Kendi sunucunda çalıştırma | Serbest | Serbest |
| Yönetilen servis olarak satma | Lisansa göre kısıtlı | Serbest |
| Kurumsal destek | Elastic abonelikleri | Birden fazla sağlayıcı |
| Sürüm hızı | Hızlı, tek merkezden | Topluluk temposu |
Kendi sunucunuzda kendi uygulamanız için çalıştırıyorsanız — ki okurların büyük çoğunluğu bu durumda — lisans farkı günlük hayatınıza dokunmaz. İkisini de indirip kurabilir, üretimde kullanabilir, ücret ödemezsiniz. Fark, ürünü başkalarına yönetilen servis olarak satmak istediğinizde ya da hukuk ekibinizin AGPL'e karşı bir tavrı olduğunda ortaya çıkar. Bu yüzden lisans, çoğu proje için ilk değil son kriter olmalıdır.
Yönetişim farkı ise uzun vadeli bir risk değerlendirmesidir. Tek şirketin yönettiği bir projede yön değişikliği hızlı olur — 2021'deki lisans değişikliği bunun kanıtıdır. Çok paydaşlı bir vakıfta ise karar süreci yavaştır ama ani sürprizler daha az olasıdır. İkisi de savunulabilir; hangisinin sizin için daha önemli olduğuna projenin ömrüne bakarak karar verin.
Özellik Karşılaştırması#
Asıl pratik fark burada. İki proje aynı çekirdeği paylaşsa da, ücretsiz kullanılabilen özellik setleri farklıdır.
| Özellik | Elasticsearch (ücretsiz katman) | OpenSearch |
|---|---|---|
| Temel arama ve toplama | Var | Var |
| TLS, kullanıcı, rol tabanlı yetki | Var | Var |
| Alan/belge düzeyi yetkilendirme | Ücretli katman | Ücretsiz |
| Uyarı ve tetikleyiciler | Ücretli katman | Ücretsiz |
| Anomali tespiti | Ücretli katman | Ücretsiz |
| Index yaşam döngüsü yönetimi | Var | Var |
| SQL sorgu arayüzü | Sınırlı / ücretli | Ücretsiz |
| Vektör (k-NN) arama | Var | Var |
| Görselleştirme arayüzü | Kibana | OpenSearch Dashboards |
Tabloyu okurken dikkat edilecek nokta şudur: "ücretli katman" ifadesi, özelliğin var olmadığı anlamına gelmez, ücretsiz sürümde kilitli olduğu anlamına gelir. Elastic'in ücretsiz katmanı yıllar içinde genişledi ve bugün temel güvenlik (TLS, kullanıcı, rol) ücretsizdir — bu, eskiden ücretli olduğu için hâlâ yanlış bilinen bir konudur.
OpenSearch'ün en belirgin avantajı, alan ve belge düzeyinde yetkilendirmenin ücretsiz gelmesidir. Çok kiracılı bir uygulamada her müşterinin yalnızca kendi belgelerini görmesini sağlamak istiyorsanız, bu tek başına seçimi belirleyebilir. Uyarı ve anomali tespiti de aynı şekilde: log analizi yapan bir ekip için bunlar süs değil, işin ta kendisidir.
Elastic tarafının avantajı ise gelişim hızı ve ekosistem olgunluğudur. Yeni Lucene sürümleri, yeni sorgu dili yetenekleri ve arama alaka modelleri genellikle önce burada görünür. Ayrıca üçüncü taraf entegrasyonlar, eğitim kaynakları ve iş ilanlarında aranan deneyim hâlâ Elasticsearch adı etrafında yoğunlaşıyor.
API ve İstemci Uyumluluğu#
Burası, geçiş planlarının en çok takıldığı yerdir. OpenSearch, Elasticsearch 7.10'dan çatallandığı için temel REST API'si o sürümle uyumludur. Index oluşturma, belge yazma, _search, toplama sorguları, _cat uç noktaları — hepsi hemen hemen aynı çalışır.
Kırılma noktası istemci kütüphanelerindedir. Elasticsearch'ün 8.x ve sonrası resmî istemcileri, bağlandıkları sunucunun sürümünü kontrol eder ve beklenmedik bir yanıt görürse bağlantıyı reddeder. Yani yeni bir Elasticsearch istemcisiyle bir OpenSearch kümesine bağlanmaya çalıştığınızda, sorgunuz hiç gönderilmeden hata alırsınız.
# Sürüm bilgisi: hangi ürüne bağlandığınızı gösteren en hızlı kontrol
curl -s -u kullanici 'https://arama.firmaniz.com:9200/' | head -20
# Elasticsearch yanıtında: "version": { "number": "8.x.y", "build_flavor": "default" }
# OpenSearch yanıtında: "version": { "distribution": "opensearch", "number": "2.x.y" }
Çözüm basittir ama bilinçli yapılmalıdır: OpenSearch kullanıyorsanız OpenSearch'ün kendi resmî istemcilerini kullanın. Bu kütüphaneler çoğu dilde mevcuttur ve API yüzeyi neredeyse aynı olduğu için kod değişikliği genellikle import satırlarıyla sınırlı kalır.
// Elasticsearch istemcisi
import { Client } from "@elastic/elasticsearch";
const es = new Client({ node: "https://localhost:9200", auth: { username: "elastic", password: "PAROLA" } });
// OpenSearch istemcisi — API yüzeyi büyük ölçüde aynı
import { Client } from "@opensearch-project/opensearch";
const os = new Client({ node: "https://localhost:9200", auth: { username: "admin", password: "PAROLA" } });
Uygulamanızı bir soyutlama katmanının arkasına almak, ileride yön değiştirmek zorunda kalırsanız hayatınızı kurtarır: arama isteklerini tek bir modülde toplayın, gövdeleri düz JSON olarak kurun ve istemciye özgü yardımcı fonksiyonlara bağımlılık kurmayın.
Vektör Arama ve Yapay Zekâ Tarafı#
Son yılların en hareketli alanı, gömme vektörleriyle (embedding) anlamsal arama. Her iki taraf da bunu destekliyor ama yaklaşımları farklı.
OpenSearch, k-NN eklentisini erken dönemde getirdi ve birden fazla vektör indeksleme motoru arasında seçim yapmanıza izin veriyor; ayrıca sinirsel arama hattı sayesinde metni vektöre çevirme adımını kümenin içinde çalıştırabiliyorsunuz. Bu, ayrı bir gömme servisi işletmek istemeyen ekipler için pratik bir kolaylık.
Elasticsearch tarafında yoğun vektör alan tipi ve buna dayalı sorgular olgunlaştı; Elastic ayrıca kendi seyrek vektör modeliyle, ayrı bir gömme modeli eğitmeye gerek kalmadan anlamsal arama yapmayı hedefleyen bir yol sunuyor. İkisinde de karma (hybrid) arama, yani klasik kelime eşleşmesi ile vektör benzerliğini birleştiren yaklaşım mümkün.
Pratik tavsiyem şu: vektör arama, iki ürün arasındaki seçimi belirleyecek kadar keskin bir fark yaratmıyor. Asıl belirleyici olan, gömme modelini nerede çalıştıracağınız ve hangi donanıma sahip olduğunuzdur. Model çıkarımını küme içinde yapacaksanız ciddi işlemci ya da GPU kaynağı ayırmanız gerekir; bunun için GPU sunucu tarafına bakmanız gerekebilir. Model çıkarımını ayrı bir serviste yapıp arama motoruna yalnızca hazır vektör göndermek, çoğu ekip için daha yönetilebilir bir mimaridir.
Hangisini Seçmelisiniz#
Karar için kullanabileceğiniz kısa bir yol haritası:
- Log ve gözlemlenebilirlik altyapısı kuruyorsanız ve uyarı, anomali tespiti gibi özelliklere ihtiyacınız varsa OpenSearch, ücretsiz katmanda daha fazlasını verdiği için öne çıkar.
- Çok kiracılı bir uygulamada belge düzeyi yetkilendirmeye ihtiyacınız varsa OpenSearch bunu ücretsiz sunar; Elastic tarafında bu ücretli katmandadır.
- Ürün araması, e-ticaret araması gibi alaka kalitesinin belirleyici olduğu bir iş yapıyorsanız Elasticsearch'ün daha hızlı gelişen alaka ve sorgu özellikleri avantaj sağlar.
- Mevcut ekibiniz Elasticsearch biliyorsa ve özel bir gereksinim yoksa, bildiğiniz üründe kalmanın değeri tablodaki çoğu farktan büyüktür.
- Ürünü yönetilen servis olarak satacaksanız Apache 2.0 lisanslı OpenSearch hukuki olarak daha rahat bir zemin sunar.
- AWS ekosisteminde çalışıyorsanız yönetilen OpenSearch servisi entegrasyon açısından daha az sürtünme yaratır; kendi sunucunuzda çalışacaksanız bu kriter geçersizdir.
Performansı bu listeye bilerek koymadım. Yayımlanan karşılaştırmalar çelişkili ve genellikle taraflardan biri tarafından finanse edilmiş durumda; ikisi de aynı Lucene çekirdeğine dayandığı için gerçek fark, sürüm farkından ve sizin index tasarımınızdan geliyor. Kendi veri kümenizle bir ölçüm yapmak, herhangi bir kıyaslama raporundan daha değerlidir. İlişkisel dünyada benzer bir seçim yapmanız gerekirse MySQL ve PostgreSQL karşılaştırması yazısı aynı yöntemi izliyor.
Geçiş Yolları ve Tuzaklar#
Elasticsearch'ten OpenSearch'e geçmek, kaynak sürüme bağlı olarak kolay ya da zahmetli olabilir.
Elasticsearch 7.10 ve öncesinden geçiş en kolay yoldur: bu sürümlerin anlık görüntüleri (snapshot) doğrudan OpenSearch'e geri yüklenebilir.
# 1) Kaynak kümede depoyu tanımla ve anlık görüntü al
curl -X PUT 'http://eski-es:9200/_snapshot/gecis' -H 'Content-Type: application/json' -d '
{ "type": "fs", "settings": { "location": "/mnt/paylasilan-yedek" } }'
curl -X PUT 'http://eski-es:9200/_snapshot/gecis/tam-1?wait_for_completion=true'
# 2) Hedef OpenSearch kümesinde aynı depoyu tanımla ve geri yükle
curl -X PUT 'https://yeni-os:9200/_snapshot/gecis' -H 'Content-Type: application/json' -d '
{ "type": "fs", "settings": { "location": "/mnt/paylasilan-yedek" } }'
curl -X POST 'https://yeni-os:9200/_snapshot/gecis/tam-1/_restore'
Elasticsearch 8 ve sonrasından geçişte anlık görüntü uyumluluğu yoktur. Bu durumda iki seçenek kalır: uzaktan yeniden index'leme ya da veriyi kaynağından yeniden yükleme. İkincisi, arama index'inin zaten türetilmiş bir veri olduğu doğru mimaride en temiz yoldur.
# Uzaktan yeniden index'leme: hedef kümede çalıştırılır
curl -X POST 'https://yeni-os:9200/_reindex?wait_for_completion=false' \
-H 'Content-Type: application/json' -d '
{
"source": {
"remote": { "host": "https://eski-es:9200", "username": "elastic", "password": "PAROLA" },
"index": "urunler"
},
"dest": { "index": "urunler" }
}'
Geçişte karşınıza çıkacak somut tuzaklar şunlar: istemci kütüphanesini değiştirmeyi unutmak (sürüm denetimi yüzünden bağlantı reddedilir), güvenlik yapılandırmasının farklı olması (OpenSearch kendi güvenlik eklentisiyle gelir, rol ve kullanıcı tanımları birebir taşınmaz), arayüz panolarının taşınması (Kibana ile OpenSearch Dashboards nesneleri her zaman uyumlu değildir) ve eklenti bağımlılıkları (bir tarafta olan bir eklentinin diğerinde karşılığı olmayabilir). Geçişi tek seferde değil, önce bir kopya index üzerinde deneyerek yapın; uygulamayı takma ad üzerinden bağladıysanız geri dönüş de kolay olur.
Sıkça Sorulan Sorular#
OpenSearch ve Elasticsearch aynı şey mi#
Aynı kökten gelirler ama artık aynı ürün değiller. OpenSearch, Elasticsearch 7.10.2 sürümünün çatallanmasıyla doğdu; o günden beri iki kod tabanı bağımsız geliştirildi. Temel arama ve index API'leri hâlâ büyük ölçüde uyumludur, ancak yönetim uç noktaları, güvenlik yapılandırması, eklentiler ve arayüzler ayrıştı. Birinde çalışan bir sorgunun diğerinde de çalışması muhtemeldir, ama bir kümeyi diğerinin istemcisiyle yönetmek işe yaramaz.
OpenSearch gerçekten ücretsiz mi#
Evet, OpenSearch Apache 2.0 lisanslıdır ve tüm özellikleri ücretsiz kullanılabilir; kurumsal destek isterseniz bunu birden fazla sağlayıcıdan satın alabilirsiniz. Elasticsearch de kendi sunucunuzda çalıştırmak için ücretsizdir, ancak bazı ileri özellikleri ücretli abonelik katmanlarına bağlıdır. Yani soru "ücretsiz mi" değil, "ihtiyacım olan özellik ücretsiz katmanda mı" olmalıdır.
Elasticsearch'ten OpenSearch'e nasıl geçerim#
Kaynak sürümünüz 7.10 ya da öncesiyse anlık görüntü alıp doğrudan OpenSearch'e geri yükleyebilirsiniz; bu en hızlı yoldur. Daha yeni Elasticsearch sürümlerinden geçişte anlık görüntü uyumluluğu yoktur, uzaktan yeniden index'leme ya da veriyi asıl kaynağından yeniden yükleme gerekir. Her iki durumda da istemci kütüphanesini değiştirmeyi ve güvenlik rollerini yeniden tanımlamayı planınıza ekleyin.
Hangisi daha hızlı#
İkisi de aynı Lucene arama kütüphanesine dayandığı için mimari düzeyde belirgin bir hız farkı yoktur; ölçümlerdeki farklar genellikle sürüm farkından, yapılandırmadan ve index tasarımından kaynaklanır. Yayımlanan kıyaslama raporlarına temkinli yaklaşın, çoğu taraflardan biri tarafından hazırlanmıştır. Karar vermeden önce kendi veri kümeniz ve kendi sorgularınızla küçük bir ölçüm yapın; bu bir günlük iş, sonucu ise yıllarca geçerli olur.
Kibana panolarımı OpenSearch Dashboards'a taşıyabilir miyim#
Kısmen. Basit gösterge panoları ve görselleştirmeler genellikle dışa aktarılıp içe aktarılabilir, ancak iki arayüz de çatallanmadan sonra ayrı geliştiğinden yeni nesne tipleri ve bazı görselleştirme türleri uyumsuzdur. Karmaşık panolarda yeniden oluşturmayı planlamak daha gerçekçidir. Geçiş öncesinde panoların bir listesini çıkarıp hangilerinin gerçekten kullanıldığını görmek, işin yarısını baştan eler.
Küçük bir proje için hangisini seçmeliyim#
Ekibinizin bildiği ürünü seçin; küçük ölçekte iki tarafın farkları neredeyse hiç hissedilmez ve öğrenme maliyeti tabloda gördüğünüz her farktan büyüktür. Bilgi eşitse ve log analizi, uyarı ya da belge düzeyi yetkilendirme gibi ihtiyaçlarınız varsa OpenSearch ücretsiz katmanda daha fazlasını verir. Ürün araması ve alaka kalitesi öncelikliyse Elasticsearch tarafındaki gelişim hızı avantaj sağlar.
Kapanış#
OpenSearch ile Elasticsearch arasındaki seçim, sanıldığı kadar dramatik bir karar değil. İkisi de aynı çekirdeğe dayanır, ikisi de açık kaynak lisanslıdır ve ikisi de üretimde yıllardır kullanılıyor. Aklınızda kalması gereken dört şey: lisans farkı yalnızca ürünü yönetilen servis olarak satacaksanız belirleyicidir, gerçek fark hangi özelliğin ücretsiz katmanda olduğudur, istemci kütüphaneleri artık birbirine bağlanmıyor ve geçiş kolaylığı kaynak sürümünüze bağlıdır. Kararı vermeden önce kendi verinizle küçük bir ölçüm yapmak, okuyacağınız her kıyaslama raporundan daha çok işinize yarar.
Hangisini seçerseniz seçin, ikisi de bellek ve disk açısından cömert bir sunucu ister; paylaşımlı ortamda çalışmaları pratik değildir. Tam kaynak garantili VDS ve bulut sunucu paketlerimiz bu iş için uygundur, yüksek hacimli log ve arama yükleri için dedicated sunucu tarafına bakabilirsiniz. Kurulum ve işletim yükünü devretmek isterseniz sunucu yönetimi hizmetimiz devreye girer.