{"id":30655,"date":"2025-09-30T09:41:05","date_gmt":"2025-09-30T06:41:05","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/?p=30655"},"modified":"2025-09-30T09:41:05","modified_gmt":"2025-09-30T06:41:05","slug":"mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/","title":{"rendered":"MongoDB&#8217;den Elasticsearch&#8217;e D\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f Veriyi Transporter ile Ubuntu 16.04 \u00dczerinde Senkronize Etme"},"content":{"rendered":"<p><body><\/p>\n<h2>MongoDB&#8217;den Elasticsearch&#8217;e D\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f Veriyi Transporter ile Ubuntu 16.04 \u00dczerinde Senkronize Etme<\/h2>\n<p>Veri senkronizasyonu, modern da\u011f\u0131t\u0131k sistem mimarilerinin temel ta\u015flar\u0131ndan biridir. \u00c7e\u015fitli veri tabanlar\u0131 ve arama motorlar\u0131 aras\u0131nda veriyi tutarl\u0131 ve g\u00fcncel tutmak, bir\u00e7ok i\u015f y\u00fck\u00fc i\u00e7in kritik \u00f6neme sahiptir. Bu makalede, pop\u00fcler NoSQL veri taban\u0131 MongoDB&#8217;deki verileri, g\u00fc\u00e7l\u00fc arama ve analiz motoru Elasticsearch&#8217;e, Transporter arac\u0131 ve Ubuntu 16.04 i\u015fletim sistemi \u00fczerinde nas\u0131l d\u00f6n\u00fc\u015ft\u00fcrerek senkronize edece\u011fimizi detayl\u0131 bir \u015fekilde inceleyece\u011fiz. \u00d6zellikle, verilerin kaynak sistemden hedef sisteme aktar\u0131l\u0131rken nas\u0131l d\u00f6n\u00fc\u015ft\u00fcr\u00fclebilece\u011fi ve bu s\u00fcrecin ad\u0131m ad\u0131m nas\u0131l kurulup y\u00f6netilece\u011fi \u00fczerinde duraca\u011f\u0131z.<\/p>\n<h3>Giri\u015f: Neden MongoDB&#8217;den Elasticsearch&#8217;e Veri Senkronizasyonu ve D\u00f6n\u00fc\u015f\u00fcm?<\/h3>\n<p>MongoDB, esnek \u015femas\u0131 ve y\u00fcksek \u00f6l\u00e7eklenebilirli\u011fi ile uygulama geli\u015ftiricileri aras\u0131nda olduk\u00e7a pop\u00fclerdir. Belge tabanl\u0131 yap\u0131s\u0131 sayesinde karma\u015f\u0131k verilerin depolanmas\u0131 ve h\u0131zl\u0131 bir \u015fekilde eri\u015filmesi m\u00fcmk\u00fcnd\u00fcr. Ancak, metin tabanl\u0131 aramalar, geli\u015fmi\u015f filtreleme ve analitik sorgular s\u00f6z konusu oldu\u011funda, MongoDB&#8217;nin yetenekleri s\u0131n\u0131rl\u0131 kalabilir. \u0130\u015fte bu noktada Elasticsearch devreye girer. Elasticsearch, tam metin arama, log analizi, metrik toplama ve daha bir\u00e7ok alanda \u00fcst\u00fcn performans sunan da\u011f\u0131t\u0131k, RESTful bir arama ve analiz motorudur.<\/p>\n<p>MongoDB&#8217;deki verilerin Elasticsearch&#8217;e senkronize edilmesi, uygulaman\u0131z\u0131n arama yeteneklerini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir. \u00d6rne\u011fin, bir e-ticaret uygulamas\u0131nda \u00fcr\u00fcn detaylar\u0131 MongoDB&#8217;de saklan\u0131rken, \u00fcr\u00fcn adlar\u0131, a\u00e7\u0131klamalar\u0131 ve kategorileri Elasticsearch&#8217;e indekslenerek h\u0131zl\u0131 ve ilgili arama sonu\u00e7lar\u0131 sunulabilir.<\/p>\n<p>Peki ya &#8220;d\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f veri&#8221; k\u0131sm\u0131? \u00c7o\u011fu zaman, kaynak sistemdeki veri yap\u0131s\u0131, hedef sistemdeki ihtiya\u00e7larla birebir \u00f6rt\u00fc\u015fmez. Elasticsearch&#8217;e g\u00f6nderilecek verinin, arama ve indeksleme performans\u0131 i\u00e7in optimize edilmesi, gereksiz alanlar\u0131n \u00e7\u0131kar\u0131lmas\u0131, yeni alanlar\u0131n eklenmesi veya mevcut alanlar\u0131n format\u0131n\u0131n de\u011fi\u015ftirilmesi gerekebilir. \u0130\u015fte bu d\u00f6n\u00fc\u015f\u00fcm s\u00fcreci, Transporter gibi ara\u00e7lar sayesinde olduk\u00e7a esnek bir \u015fekilde y\u00f6netilebilir. Transporter, Go dilinde yaz\u0131lm\u0131\u015f, \u00e7e\u015fitli kaynaklardan (MongoDB, PostgreSQL vb.) veri al\u0131p, \u00fczerinde d\u00f6n\u00fc\u015f\u00fcm uygulayarak \u00e7e\u015fitli hedeflere (Elasticsearch, Kafka vb.) g\u00f6nderebilen a\u00e7\u0131k kaynakl\u0131 bir ETL (Extract, Transform, Load) arac\u0131d\u0131r.<\/p>\n<p>Ubuntu 16.04, bu makalenin yaz\u0131ld\u0131\u011f\u0131 d\u00f6nemde yayg\u0131n olarak kullan\u0131lan bir sunucu i\u015fletim sistemiydi. Her ne kadar g\u00fcncel s\u00fcr\u00fcmleri mevcut olsa da, temel kurulum ve yap\u0131land\u0131rma ad\u0131mlar\u0131 benzerlik g\u00f6stermektedir. Bu makaledeki ad\u0131mlar, Ubuntu&#8217;nun daha yeni s\u00fcr\u00fcmleri i\u00e7in de uyarlanabilir.<\/p>\n<h3>\u00d6n Gereksinimler ve Sistem Haz\u0131rl\u0131\u011f\u0131<\/h3>\n<p>Bu rehbere ba\u015flamadan \u00f6nce, a\u015fa\u011f\u0131daki \u00f6n gereksinimlerin kar\u015f\u0131land\u0131\u011f\u0131ndan emin olmal\u0131s\u0131n\u0131z:<\/p>\n<p>*   <strong>Ubuntu 16.04 Sunucusu:<\/strong> \u0130nternet eri\u015fimi olan ve <code>sudo<\/code> yetkilerine sahip bir kullan\u0131c\u0131ya sahip bir Ubuntu 16.04 LTS sunucusu.<br \/>\n*   <strong>MongoDB:<\/strong> Senkronize edilecek verileri i\u00e7eren \u00e7al\u0131\u015fan bir MongoDB \u00f6rne\u011fi.<br \/>\n*   <strong>Elasticsearch:<\/strong> Hedef olarak kullan\u0131lacak \u00e7al\u0131\u015fan bir Elasticsearch \u00f6rne\u011fi.<br \/>\n*   <strong>Go Dili:<\/strong> Transporter Go ile yaz\u0131ld\u0131\u011f\u0131 i\u00e7in Go \u00e7al\u0131\u015fma zaman\u0131 ve derleyicisi gereklidir.<\/p>\n<h4>Ubuntu 16.04 Sistem G\u00fcncellemesi ve Ba\u011f\u0131ml\u0131l\u0131klar\u0131n Kurulumu<\/h4>\n<p>\u0130lk ad\u0131m olarak, sisteminizi g\u00fcncelleyelim ve gerekli temel ba\u011f\u0131ml\u0131l\u0131klar\u0131 kural\u0131m:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt upgrade -y\nsudo apt install -y build-essential git curl wget<\/code><\/pre>\n<p><code>build-essential<\/code> paketi, Go programlar\u0131n\u0131n derlenmesi i\u00e7in gerekli ara\u00e7lar\u0131 (GCC gibi) i\u00e7erir. <code>git<\/code>, Transporter&#8217;\u0131 indirmek i\u00e7in kullan\u0131lacakt\u0131r.<\/p>\n<h3>Go Dili Kurulumu<\/h3>\n<p>Transporter, Go dilinde yaz\u0131lm\u0131\u015ft\u0131r ve kaynak koddan derlenmesi gerekir. Bu nedenle, Go dilini sistemimize kurmal\u0131y\u0131z.<\/p>\n<h4>Go \u0130ndirme ve Y\u00fckleme<\/h4>\n<p>Go&#8217;nun resmi web sitesinden en son kararl\u0131 s\u00fcr\u00fcm\u00fcn\u00fc indirmek en iyi y\u00f6ntemdir. Ubuntu 16.04 i\u00e7in genellikle <code>.tar.gz<\/code> ar\u015fivi kullan\u0131l\u0131r. Bu makale i\u00e7in, Go 1.16 s\u00fcr\u00fcm\u00fcn\u00fc \u00f6rnek alaca\u011f\u0131z, ancak en g\u00fcncel kararl\u0131 s\u00fcr\u00fcm\u00fc kullanman\u0131z \u00f6nerilir.<\/p>\n<pre><code class=\"language-bash\"># Go'nun en son s\u00fcr\u00fcm\u00fcn\u00fc kontrol etmek i\u00e7in: https:\/\/golang.org\/dl\/\n<h2>Bu \u00f6rnekte Go 1.16.x kullanaca\u011f\u0131z, siz g\u00fcncel s\u00fcr\u00fcm\u00fc kullanmal\u0131s\u0131n\u0131z.<\/h2>\nwget https:\/\/golang.org\/dl\/go1.16.linux-amd64.tar.gz\nsudo tar -C \/usr\/local -xzf go1.16.linux-amd64.tar.gz<\/code><\/pre>\n<p>Bu komut, Go ar\u015fivini <code>\/usr\/local<\/code> dizinine \u00e7\u0131kar\u0131r.<\/p>\n<h4>Ortam De\u011fi\u015fkenlerinin Ayarlanmas\u0131<\/h4>\n<p>Go&#8217;nun d\u00fczg\u00fcn \u00e7al\u0131\u015fabilmesi i\u00e7in baz\u0131 ortam de\u011fi\u015fkenlerinin ayarlanmas\u0131 gerekir. Bu de\u011fi\u015fkenleri kullan\u0131c\u0131 profilinize (\u00f6rne\u011fin <code>~\/.profile<\/code> veya <code>~\/.bashrc<\/code>) ekleyebilirsiniz.<\/p>\n<pre><code class=\"language-bash\">echo 'export GOROOT=\/usr\/local\/go' >> ~\/.profile\necho 'export GOPATH=$HOME\/go' >> ~\/.profile\necho 'export PATH=$GOPATH\/bin:$GOROOT\/bin:$PATH' >> ~\/.profile\nsource ~\/.profile<\/code><\/pre>\n<p>*   <code>GOROOT<\/code>: Go kurulum dizinini belirtir.<br \/>\n*   <code>GOPATH<\/code>: Go projelerinizin ve ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131z\u0131n depolanaca\u011f\u0131 dizini belirtir.<br \/>\n*   <code>PATH<\/code>: Go y\u00fcr\u00fct\u00fclebilir dosyalar\u0131n\u0131n sistem PATH&#8217;ine eklenmesini sa\u011flar.<\/p>\n<p>De\u011fi\u015fikliklerin etkili olmas\u0131 i\u00e7in terminali yeniden ba\u015flat\u0131n veya <code>source ~\/.profile<\/code> komutunu \u00e7al\u0131\u015ft\u0131r\u0131n.<\/p>\n<h4>Go Kurulumunun Do\u011frulanmas\u0131<\/h4>\n<p>Go&#8217;nun ba\u015far\u0131l\u0131 bir \u015fekilde kuruldu\u011funu do\u011frulamak i\u00e7in s\u00fcr\u00fcm\u00fcn\u00fc kontrol edin:<\/p>\n<pre><code class=\"language-bash\">go version<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131 olarak <code>go version go1.16.x linux\/amd64<\/code> benzeri bir \u015fey g\u00f6rmelisiniz.<\/p>\n<h3>MongoDB Kurulumu<\/h3>\n<p>MongoDB&#8217;nin Ubuntu 16.04 \u00fczerine kurulumu i\u00e7in resmi MongoDB deposunu kullanaca\u011f\u0131z.<\/p>\n<h4>MongoDB Deposu Ekleme<\/h4>\n<p>MongoDB&#8217;nin GPG anahtar\u0131n\u0131 indirip ekleyin:<\/p>\n<pre><code class=\"language-bash\">sudo apt-key adv --keyserver hkp:\/\/keyserver.ubuntu.com:80 --recv EA312927<\/code><\/pre>\n<p>MongoDB deposunu <code>sources.list.d<\/code> dizinine ekleyin:<\/p>\n<pre><code class=\"language-bash\">echo \"deb http:\/\/repo.mongodb.org\/apt\/ubuntu xenial\/mongodb-org\/3.2 multiverse\" | sudo tee \/etc\/apt\/sources.list.d\/mongodb-org-3.2.list<\/code><\/pre>\n<p>Bu \u00f6rnekte MongoDB 3.2 s\u00fcr\u00fcm\u00fcn\u00fc kullan\u0131yoruz, Ubuntu 16.04 (Xenial) i\u00e7in en uyumlu ve yayg\u0131n s\u00fcr\u00fcm buydu. Daha g\u00fcncel MongoDB s\u00fcr\u00fcmleri daha yeni Ubuntu s\u00fcr\u00fcmleri gerektirebilir.<\/p>\n<h4>MongoDB Kurulumu ve Ba\u015flatma<\/h4>\n<p>Depoyu ekledikten sonra, paket listesini g\u00fcncelleyin ve MongoDB&#8217;yi kurun:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt install -y mongodb-org<\/code><\/pre>\n<p>MongoDB servisini ba\u015flat\u0131n ve sistem ba\u015flang\u0131c\u0131nda otomatik ba\u015flamas\u0131 i\u00e7in etkinle\u015ftirin:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl start mongod\nsudo systemctl enable mongod<\/code><\/pre>\n<h4>MongoDB Kurulumunun Do\u011frulanmas\u0131 ve \u00d6rnek Veri Ekleme<\/h4>\n<p>MongoDB&#8217;nin \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 kontrol edin:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status mongod<\/code><\/pre>\n<p>Ard\u0131ndan, Transporter ile senkronize edece\u011fimiz \u00f6rnek verileri ekleyelim. MongoDB kabu\u011funa ba\u011flan\u0131n:<\/p>\n<pre><code class=\"language-bash\">mongo<\/code><\/pre>\n<p>A\u015fa\u011f\u0131daki komutlar\u0131 \u00e7al\u0131\u015ft\u0131rarak \u00f6rnek bir veritaban\u0131 ve koleksiyon olu\u015fturun:<\/p>\n<pre><code class=\"language-javascript\">use mydatabase;\ndb.mycollection.insertMany([\n  { _id: ObjectId(\"60c72b1f9c1e4c001f000001\"), name: \"Laptop X\", description: \"G\u00fc\u00e7l\u00fc bir i\u015f diz\u00fcst\u00fc bilgisayar\u0131.\", price: 1200, category: \"Elektronik\", tags: [\"diz\u00fcst\u00fc\", \"i\u015f\", \"y\u00fcksek performans\"], stock: 50, created_at: new Date() },\n  { _id: ObjectId(\"60c72b1f9c1e4c001f000002\"), name: \"Ak\u0131ll\u0131 Telefon Y\", description: \"En son model ak\u0131ll\u0131 telefon.\", price: 800, category: \"Elektronik\", tags: [\"telefon\", \"ak\u0131ll\u0131\", \"mobil\"], stock: 120, created_at: new Date() },\n  { _id: ObjectId(\"60c72b1f9c1e4c001f000003\"), name: \"Kablosuz Kulakl\u0131k Z\", description: \"Harika ses kalitesi sunan kablosuz kulakl\u0131k.\", price: 150, category: \"Aksesuar\", tags: [\"kulakl\u0131k\", \"kablosuz\", \"ses\"], stock: 200, created_at: new Date() },\n  { _id: ObjectId(\"60c72b1f9c1e4c001f000004\"), name: \"Masa\u00fcst\u00fc Bilgisayar A\", description: \"Oyun ve profesyonel kullan\u0131m i\u00e7in g\u00fc\u00e7l\u00fc masa\u00fcst\u00fc.\", price: 2500, category: \"Elektronik\", tags: [\"bilgisayar\", \"oyun\", \"profesyonel\"], stock: 30, created_at: new Date() },\n  { _id: ObjectId(\"60c72b1f9c1e4c001f000005\"), name: \"Ak\u0131ll\u0131 Saat B\", description: \"G\u00fcnl\u00fck aktivitelerinizi takip edin.\", price: 250, category: \"Giyilebilir Teknoloji\", tags: [\"saat\", \"ak\u0131ll\u0131\", \"fitness\"], stock: 80, created_at: new Date() }\n]);\nexit<\/code><\/pre>\n<p>Bu veriler \u00fczerinde d\u00f6n\u00fc\u015f\u00fcm uygulayarak Elasticsearch&#8217;e g\u00f6nderece\u011fiz.<\/p>\n<h3>Elasticsearch Kurulumu<\/h3>\n<p>Elasticsearch&#8217;\u00fc Ubuntu 16.04 \u00fczerine kurmak i\u00e7in Elastic&#8217;in resmi deposunu kullanaca\u011f\u0131z.<\/p>\n<h4>Elasticsearch Deposu Ekleme<\/h4>\n<p>Elasticsearch&#8217;\u00fcn GPG anahtar\u0131n\u0131 indirip ekleyin:<\/p>\n<pre><code class=\"language-bash\">wget -qO - https:\/\/artifacts.elastic.co\/GPG-KEY-elasticsearch | sudo apt-key add -<\/code><\/pre>\n<p>Depoyu ekleyin. Bu \u00f6rnekte Elasticsearch 5.x s\u00fcr\u00fcm\u00fcn\u00fc kullanaca\u011f\u0131z, \u00e7\u00fcnk\u00fc Ubuntu 16.04 ile uyumlulu\u011fu daha iyidir. Daha yeni Elasticsearch s\u00fcr\u00fcmleri, daha yeni Java s\u00fcr\u00fcmleri ve i\u015fletim sistemi gereksinimleri isteyebilir.<\/p>\n<pre><code class=\"language-bash\">echo \"deb https:\/\/artifacts.elastic.co\/packages\/5.x\/apt stable main\" | sudo tee -a \/etc\/apt\/sources.list.d\/elastic-5.x.list<\/code><\/pre>\n<h4>Elasticsearch Kurulumu ve Ba\u015flatma<\/h4>\n<p>Depoyu ekledikten sonra, paket listesini g\u00fcncelleyin ve Elasticsearch&#8217;\u00fc kurun:<\/p>\n<pre><code class=\"language-bash\">sudo apt update\nsudo apt install -y elasticsearch<\/code><\/pre>\n<p>Elasticsearch servisini ba\u015flat\u0131n ve sistem ba\u015flang\u0131c\u0131nda otomatik ba\u015flamas\u0131 i\u00e7in etkinle\u015ftirin:<\/p>\n<pre><code class=\"language-bash\">sudo systemctl start elasticsearch\nsudo systemctl enable elasticsearch<\/code><\/pre>\n<h4>Elasticsearch Kurulumunun Do\u011frulanmas\u0131<\/h4>\n<p>Elasticsearch&#8217;\u00fcn \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 kontrol edin. Ba\u015flamas\u0131 biraz zaman alabilir.<\/p>\n<pre><code class=\"language-bash\">sudo systemctl status elasticsearch<\/code><\/pre>\n<p>Birka\u00e7 dakika bekledikten sonra, bir <code>curl<\/code> komutu ile Elasticsearch&#8217;\u00fcn HTTP API&#8217;sine istek g\u00f6ndererek durumunu kontrol edin:<\/p>\n<pre><code class=\"language-bash\">curl -X GET \"localhost:9200\/\"<\/code><\/pre>\n<p>\u00c7\u0131kt\u0131da Elasticsearch&#8217;\u00fcn s\u00fcr\u00fcm\u00fcn\u00fc ve k\u00fcme ad\u0131n\u0131 g\u00f6steren bir JSON yan\u0131t\u0131 g\u00f6rmelisiniz.<\/p>\n<h3>Transporter Kurulumu<\/h3>\n<p>Go dili ve ortam de\u011fi\u015fkenleri ayarland\u0131ktan sonra, Transporter&#8217;\u0131 kurmak olduk\u00e7a basittir.<\/p>\n<h4>Transporter&#8217;\u0131 \u0130ndirme ve Derleme<\/h4>\n<p><code>go get<\/code> komutu, Transporter&#8217;\u0131n kaynak kodunu <code>GOPATH<\/code> dizininize indirir ve derler.<\/p>\n<pre><code class=\"language-bash\">go get github.com\/compose\/transporter<\/code><\/pre>\n<p>Bu komut, Transporter&#8217;\u0131 indirir, ba\u011f\u0131ml\u0131l\u0131klar\u0131n\u0131 \u00e7\u00f6zer ve <code>transporter<\/code> y\u00fcr\u00fct\u00fclebilir dosyas\u0131n\u0131 <code>$GOPATH\/bin<\/code> dizinine yerle\u015ftirir.<\/p>\n<h4>Transporter Kurulumunun Do\u011frulanmas\u0131<\/h4>\n<p><code>transporter<\/code> komutunu \u00e7al\u0131\u015ft\u0131rarak kurulumu do\u011frulayabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">transporter --help<\/code><\/pre>\n<p>Yard\u0131m mesaj\u0131n\u0131 g\u00f6rmeniz, Transporter&#8217;\u0131n ba\u015far\u0131yla kuruldu\u011funu g\u00f6sterir.<\/p>\n<h3>Transporter ile Veri Senkronizasyonu ve D\u00f6n\u00fc\u015f\u00fcm\u00fc<\/h3>\n<p>\u015eimdi Transporter&#8217;\u0131 yap\u0131land\u0131rma ve \u00e7al\u0131\u015ft\u0131rma zaman\u0131. Bu s\u00fcre\u00e7 \u00fc\u00e7 ana dosyay\u0131 gerektirir:<\/p>\n<p>1.  <strong><code>config.yaml<\/code><\/strong>: Kaynak ve hedef veritaban\u0131 ba\u011flant\u0131 bilgilerini i\u00e7erir.<br \/>\n2.  <strong><code>transform.js<\/code><\/strong>: Veri d\u00f6n\u00fc\u015f\u00fcm mant\u0131\u011f\u0131n\u0131 i\u00e7eren JavaScript kodu.<br \/>\n3.  <strong><code>pipeline.js<\/code><\/strong>: Transporter&#8217;\u0131n \u00e7al\u0131\u015fma ak\u0131\u015f\u0131n\u0131 (kaynak, d\u00f6n\u00fc\u015f\u00fcm, hedef) tan\u0131mlayan JavaScript kodu.<\/p>\n<p>Bu dosyalar\u0131 <code>~\/transporter_sync<\/code> gibi yeni bir dizinde olu\u015ftural\u0131m:<\/p>\n<pre><code class=\"language-bash\">mkdir ~\/transporter_sync\ncd ~\/transporter_sync<\/code><\/pre>\n<h4><code>config.yaml<\/code> Dosyas\u0131 Olu\u015fturma<\/h4>\n<p>Bu dosya, Transporter&#8217;\u0131n MongoDB ve Elasticsearch ile nas\u0131l ba\u011flant\u0131 kuraca\u011f\u0131n\u0131 tan\u0131mlar.<\/p>\n<pre><code class=\"language-yaml\"># ~\/transporter_sync\/config.yaml\n<h2>MongoDB kayna\u011f\u0131<\/h2>\nmongo:\n  type: mongodb\n  uri: mongodb:\/\/localhost:27017\/mydatabase\n\n<h2>Elasticsearch hedefi<\/h2>\nelastic:\n  type: elasticsearch\n  uri: http:\/\/localhost:9200<\/code><\/pre>\n<p>*   <code>mongo<\/code>: MongoDB kayna\u011f\u0131n\u0131 tan\u0131mlar. <code>type: mongodb<\/code> ve <code>uri<\/code> ile ba\u011flant\u0131 dizesini belirtiriz.<br \/>\n*   <code>elastic<\/code>: Elasticsearch hedefini tan\u0131mlar. <code>type: elasticsearch<\/code> ve <code>uri<\/code> ile ba\u011flant\u0131 dizesini belirtiriz.<\/p>\n<h4><code>transform.js<\/code> Dosyas\u0131 Olu\u015fturma (Veri D\u00f6n\u00fc\u015f\u00fcm\u00fc)<\/h4>\n<p>Bu dosya, MongoDB&#8217;den gelen her belgeye uygulanacak JavaScript d\u00f6n\u00fc\u015f\u00fcm mant\u0131\u011f\u0131n\u0131 i\u00e7erir. \u0130\u015fte baz\u0131 \u00f6rnek d\u00f6n\u00fc\u015f\u00fcmler:<\/p>\n<p>*   <code>_id<\/code> alan\u0131n\u0131 <code>id<\/code> olarak yeniden adland\u0131rma (Elasticsearch i\u00e7in daha yayg\u0131n bir pratik).<br \/>\n*   <code>description<\/code> alan\u0131n\u0131 k\u0131saltma veya belirli kelimeleri \u00e7\u0131karma.<br \/>\n*   <code>price<\/code> alan\u0131na <code>currency<\/code> bilgisi ekleme.<br \/>\n*   <code>tags<\/code> dizisini birle\u015ftirip tek bir string alan olu\u015fturma.<br \/>\n*   <code>category<\/code> alan\u0131n\u0131 k\u00fc\u00e7\u00fck harfe \u00e7evirme.<br \/>\n*   <code>created_at<\/code> alan\u0131n\u0131 ISO format\u0131na d\u00f6n\u00fc\u015ft\u00fcrme.<br \/>\n*   <code>stock<\/code> alan\u0131 100&#8217;den az ise <code>low_stock: true<\/code> ekleme.<\/p>\n<pre><code class=\"language-javascript\">\/\/ ~\/transporter_sync\/transform.js\nmodule.exports = function(doc) {\n  \/\/ 1. _id alan\u0131n\u0131 'id' olarak yeniden adland\u0131r ve string'e \u00e7evir\n  if (doc._id) {\n    doc.id = doc._id.toString();\n    delete doc._id; \/\/ Orijinal _id'yi kald\u0131r\n  }\n\n  \/\/ 2. 'name' alan\u0131n\u0131 b\u00fcy\u00fck harfe \u00e7evir\n  if (doc.name) {\n    doc.name = doc.name.toUpperCase();\n  }\n\n  \/\/ 3. 'description' alan\u0131n\u0131 k\u0131salt ve yeni bir 'short_description' alan\u0131 ekle\n  if (doc.description && doc.description.length > 50) {\n    doc.short_description = doc.description.substring(0, 47) + \"...\";\n  } else if (doc.description) {\n    doc.short_description = doc.description;\n  }\n\n  \/\/ 4. 'price' alan\u0131na 'currency' ekleyerek yeni bir 'price_details' nesnesi olu\u015ftur\n  if (doc.price) {\n    doc.price_details = {\n      value: doc.price,\n      currency: \"USD\"\n    };\n    delete doc.price; \/\/ Orijinal price'\u0131 kald\u0131r\n  }\n\n  \/\/ 5. 'category' alan\u0131n\u0131 k\u00fc\u00e7\u00fck harfe \u00e7evir ve 'product_category' olarak yeniden adland\u0131r\n  if (doc.category) {\n    doc.product_category = doc.category.toLowerCase();\n    delete doc.category;\n  }\n\n  \/\/ 6. 'tags' dizisini birle\u015ftirip virg\u00fclle ayr\u0131lm\u0131\u015f bir string haline getir\n  if (Array.isArray(doc.tags)) {\n    doc.tags_string = doc.tags.join(\", \");\n    \/\/ delete doc.tags; \/\/ \u0130ste\u011fe ba\u011fl\u0131: orijinal tags dizisini kald\u0131rabiliriz\n  }\n\n  \/\/ 7. 'created_at' alan\u0131n\u0131 ISO string format\u0131na d\u00f6n\u00fc\u015ft\u00fcr\n  if (doc.created_at instanceof Date) {\n    doc.created_at_iso = doc.created_at.toISOString();\n    \/\/ delete doc.created_at; \/\/ Orijinal Date objesini kald\u0131rabiliriz\n  }\n\n  \/\/ 8. 'stock' alan\u0131 100'den az ise 'low_stock' bayra\u011f\u0131 ekle\n  if (doc.stock !== undefined && doc.stock < 100) {\n    doc.low_stock = true;\n  } else {\n    doc.low_stock = false;\n  }\n\n  \/\/ 9. Yeni bir 'last_updated' alan\u0131 ekle (senkronizasyon zaman\u0131)\n  doc.last_updated = new Date().toISOString();\n\n  \/\/ D\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f belgeyi d\u00f6nd\u00fcr\n  return doc;\n};<\/code><\/pre>\n<p>Bu script, her belgeyi al\u0131r ve \u00fczerinde yukar\u0131da belirtilen d\u00f6n\u00fc\u015f\u00fcmleri uygular. <code>return doc;<\/code> ile d\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f belgeyi Transporter'a geri g\u00f6nderir.<\/p>\n<h4><code>pipeline.js<\/code> Dosyas\u0131 Olu\u015fturma<\/h4>\n<p>Bu dosya, Transporter'\u0131n kaynak, d\u00f6n\u00fc\u015f\u00fcm ve hedef aras\u0131ndaki ak\u0131\u015f\u0131 tan\u0131mlar.<\/p>\n<pre><code class=\"language-javascript\">\/\/ ~\/transporter_sync\/pipeline.js\nSource({\n  name: \"mongo\", \/\/ config.yaml'daki kaynak ad\u0131\n  namespace: \"mydatabase.mycollection\", \/\/ Senkronize edilecek veritaban\u0131 ve koleksiyon\n  tail: true \/\/ True ise s\u00fcrekli de\u011fi\u015fiklikleri dinler (oplog), false ise tek seferlik \u00e7al\u0131\u015f\u0131r\n})(\n  Transform({\n    name: \"transform\", \/\/ transform.js dosyas\u0131ndaki mod\u00fcl ad\u0131\n    filename: \"transform.js\" \/\/ transform.js dosyas\u0131n\u0131n yolu\n  })\n)(\n  Sink({\n    name: \"elastic\", \/\/ config.yaml'daki hedef ad\u0131\n    namespace: \"products.items\", \/\/ Elasticsearch'teki indeks ve tip (type, ES 7+ i\u00e7in kald\u0131r\u0131ld\u0131, ama Transporter'da hala kullan\u0131l\u0131r)\n    timeout: \"10s\" \/\/ Yazma i\u015flemleri i\u00e7in zaman a\u015f\u0131m\u0131\n  })\n);<\/code><\/pre>\n<p>*   <code>Source<\/code>: Veri kayna\u011f\u0131n\u0131 tan\u0131mlar.<br \/>\n    *   <code>name: \"mongo\"<\/code>: <code>config.yaml<\/code> dosyas\u0131ndaki MongoDB ba\u011flant\u0131 ayarlar\u0131n\u0131 kullan\u0131r.<br \/>\n    *   <code>namespace: \"mydatabase.mycollection\"<\/code>: MongoDB'de senkronize edilecek veritaban\u0131 ve koleksiyonu belirtir.<br \/>\n    *   <code>tail: true<\/code>: Bu \u00f6nemlidir. <code>true<\/code> olarak ayarland\u0131\u011f\u0131nda, Transporter MongoDB'nin oplog'unu (i\u015flem g\u00fcnl\u00fc\u011f\u00fc) izleyerek ger\u00e7ek zamanl\u0131 de\u011fi\u015fiklikleri (ekleme, g\u00fcncelleme, silme) Elasticsearch'e senkronize eder. <code>false<\/code> ise, sadece mevcut veriyi tek seferlik senkronize eder ve sonra durur.<br \/>\n*   <code>Transform<\/code>: D\u00f6n\u00fc\u015f\u00fcm ad\u0131m\u0131n\u0131 tan\u0131mlar.<br \/>\n    *   <code>name: \"transform\"<\/code>: <code>transform.js<\/code> dosyas\u0131ndaki <code>module.exports<\/code> fonksiyonuna referans verir.<br \/>\n    *   <code>filename: \"transform.js\"<\/code>: D\u00f6n\u00fc\u015f\u00fcm scriptinin dosya yolunu belirtir.<br \/>\n*   <code>Sink<\/code>: Veri hedefini tan\u0131mlar.<br \/>\n    *   <code>name: \"elastic\"<\/code>: <code>config.yaml<\/code> dosyas\u0131ndaki Elasticsearch ba\u011flant\u0131 ayarlar\u0131n\u0131 kullan\u0131r.<br \/>\n    *   <code>namespace: \"products.items\"<\/code>: Elasticsearch'te olu\u015fturulacak indeksi (<code>products<\/code>) ve tipi (<code>items<\/code>) belirtir. Elasticsearch 7.x ve sonras\u0131 i\u00e7in tipler (types) kald\u0131r\u0131ld\u0131\u011f\u0131 i\u00e7in, bu alan genellikle tek bir anahtar kelime (\u00f6rne\u011fin <code>products<\/code>) olarak da kullan\u0131labilir ve Transporter bunu indeks ad\u0131 olarak kullan\u0131r. Ancak, 5.x gibi eski s\u00fcr\u00fcmlerde tip hala ge\u00e7erliydi.<br \/>\n    *   <code>timeout<\/code>: Elasticsearch'e yazma i\u015flemleri i\u00e7in bir zaman a\u015f\u0131m\u0131 belirler.<\/p>\n<p><strong>\u00d6nemli Not: MongoDB Oplog ve Replikasyon Seti<\/strong><\/p>\n<p><code>tail: true<\/code> \u00f6zelli\u011fini kullanabilmek i\u00e7in MongoDB sunucunuzun bir replikasyon seti olarak yap\u0131land\u0131r\u0131lmas\u0131 gerekmektedir. Tekil bir MongoDB \u00f6rne\u011fi \u00fczerinde oplog bulunmaz. E\u011fer MongoDB'niz tek bir \u00f6rnek olarak \u00e7al\u0131\u015f\u0131yorsa, onu bir replikasyon setine d\u00f6n\u00fc\u015ft\u00fcrmeniz gerekir. En basit haliyle, tek bir sunuculu bir replikasyon seti olu\u015fturabilirsiniz:<\/p>\n<p>1.  <code>mongod.conf<\/code> dosyas\u0131n\u0131 d\u00fczenleyin (genellikle <code>\/etc\/mongod.conf<\/code>):<\/p>\n<pre><code class=\"language-yaml\"># replication:\n    #   replSetName: rs0<\/code><\/pre>\n<p>    Bu sat\u0131rlar\u0131 yorumdan \u00e7\u0131kar\u0131n veya ekleyin.<br \/>\n2.  MongoDB servisini yeniden ba\u015flat\u0131n: <code>sudo systemctl restart mongod<\/code>.<br \/>\n3.  MongoDB kabu\u011funa ba\u011flan\u0131n ve replikasyon setini ba\u015flat\u0131n:<\/p>\n<pre><code class=\"language-bash\">mongo\n    rs.initiate()\n    exit<\/code><\/pre>\n<p>    <code>rs.status()<\/code> komutu ile replikasyon setinin durumunu kontrol edebilirsiniz.<\/p>\n<h4>Transporter'\u0131 \u00c7al\u0131\u015ft\u0131rma<\/h4>\n<p>T\u00fcm yap\u0131land\u0131rma dosyalar\u0131 haz\u0131r oldu\u011funa g\u00f6re, Transporter'\u0131 \u00e7al\u0131\u015ft\u0131rabiliriz:<\/p>\n<pre><code class=\"language-bash\">transporter run pipeline.js --config config.yaml<\/code><\/pre>\n<p>Bu komutu \u00e7al\u0131\u015ft\u0131rd\u0131\u011f\u0131n\u0131zda, Transporter MongoDB'deki <code>mydatabase.mycollection<\/code> koleksiyonundaki mevcut verileri okuyacak, <code>transform.js<\/code> scripti ile d\u00f6n\u00fc\u015ft\u00fcrecek ve <code>products.items<\/code> indeksine Elasticsearch'e g\u00f6nderecektir. E\u011fer <code>tail: true<\/code> ayar\u0131 yap\u0131ld\u0131ysa, Transporter \u00e7al\u0131\u015fmaya devam edecek ve MongoDB'deki t\u00fcm yeni ekleme, g\u00fcncelleme ve silme i\u015flemlerini ger\u00e7ek zamanl\u0131 olarak Elasticsearch'e yans\u0131tacakt\u0131r.<\/p>\n<p>Terminalde Transporter'\u0131n loglar\u0131n\u0131 g\u00f6receksiniz. Senkronizasyon ba\u015far\u0131l\u0131 olursa, \"Transporter started\" ve ard\u0131ndan senkronize edilen belge say\u0131s\u0131yla ilgili mesajlar g\u00f6receksiniz.<\/p>\n<h3>Senkronizasyonun Do\u011frulanmas\u0131<\/h3>\n<p>Transporter \u00e7al\u0131\u015ft\u0131ktan sonra, verilerin Elasticsearch'e do\u011fru bir \u015fekilde senkronize edilip edilmedi\u011fini kontrol edelim.<\/p>\n<h4>Elasticsearch'te Verileri Kontrol Etme<\/h4>\n<p>Bir <code>curl<\/code> komutu kullanarak <code>products<\/code> indeksindeki belgeleri sorgulayabilirsiniz:<\/p>\n<pre><code class=\"language-bash\">curl -X GET \"localhost:9200\/products\/_search?pretty\"<\/code><\/pre>\n<p>Bu komut, <code>products<\/code> indeksindeki t\u00fcm belgeleri ve bunlar\u0131n d\u00f6n\u00fc\u015f\u00fcm sonras\u0131 hallerini JSON format\u0131nda g\u00f6sterecektir. A\u015fa\u011f\u0131daki gibi bir \u00e7\u0131kt\u0131 g\u00f6rmelisiniz (detaylar d\u00f6n\u00fc\u015f\u00fcmlerinize g\u00f6re de\u011fi\u015fir):<\/p>\n<pre><code class=\"language-json\">{\n  \"took\" : ...,\n  \"timed_out\" : false,\n  \"_shards\" : {\n    \"total\" : ...,\n    \"successful\" : ...,\n    \"failed\" : ...\n  },\n  \"hits\" : {\n    \"total\" : ...,\n    \"max_score\" : ...,\n    \"hits\" : [\n      {\n        \"_index\" : \"products\",\n        \"_type\" : \"items\",\n        \"_id\" : \"60c72b1f9c1e4c001f000001\",\n        \"_score\" : 1.0,\n        \"_source\" : {\n          \"id\" : \"60c72b1f9c1e4c001f000001\",\n          \"name\" : \"LAPTOP X\",\n          \"description\" : \"G\u00fc\u00e7l\u00fc bir i\u015f diz\u00fcst\u00fc bilgisayar\u0131.\",\n          \"short_description\" : \"G\u00fc\u00e7l\u00fc bir i\u015f diz\u00fcst\u00fc bilgisayar\u0131.\",\n          \"price_details\" : {\n            \"value\" : 1200,\n            \"currency\" : \"USD\"\n          },\n          \"product_category\" : \"elektronik\",\n          \"tags\" : [\"diz\u00fcst\u00fc\", \"i\u015f\", \"y\u00fcksek performans\"],\n          \"tags_string\" : \"diz\u00fcst\u00fc, i\u015f, y\u00fcksek performans\",\n          \"stock\" : 50,\n          \"created_at\" : \"2023-10-27T10:00:00.000Z\",\n          \"created_at_iso\" : \"2023-10-27T10:00:00.000Z\",\n          \"low_stock\" : true,\n          \"last_updated\" : \"2023-10-27T10:05:00.000Z\"\n        }\n      },\n      \/\/ ... di\u011fer belgeler\n    ]\n  }\n}<\/code><\/pre>\n<p>Yukar\u0131daki \u00e7\u0131kt\u0131ya bakarak, <code>_id<\/code>'nin <code>id<\/code>'ye d\u00f6n\u00fc\u015ft\u00fcr\u00fcld\u00fc\u011f\u00fcn\u00fc, <code>name<\/code>'in b\u00fcy\u00fck harf oldu\u011funu, <code>short_description<\/code>, <code>price_details<\/code>, <code>product_category<\/code>, <code>tags_string<\/code>, <code>created_at_iso<\/code>, <code>low_stock<\/code> ve <code>last_updated<\/code> gibi yeni alanlar\u0131n eklendi\u011fini g\u00f6rebilirsiniz. Bu, d\u00f6n\u00fc\u015f\u00fcm\u00fcn ba\u015far\u0131l\u0131 oldu\u011funu g\u00f6sterir.<\/p>\n<h4>MongoDB'de De\u011fi\u015fiklik Yapma ve Ger\u00e7ek Zamanl\u0131 Senkronizasyonu Kontrol Etme<\/h4>\n<p>E\u011fer <code>tail: true<\/code> olarak ayarland\u0131ysa, MongoDB'de bir de\u011fi\u015fiklik yaparak Transporter'\u0131n bu de\u011fi\u015fikli\u011fi alg\u0131lay\u0131p Elasticsearch'e yans\u0131t\u0131p yans\u0131tmad\u0131\u011f\u0131n\u0131 kontrol edebiliriz.<\/p>\n<p>MongoDB kabu\u011funa ba\u011flan\u0131n:<\/p>\n<pre><code class=\"language-bash\">mongo\nuse mydatabase;\ndb.mycollection.updateOne(\n  { name: \"Laptop X\" },\n  { $set: { price: 1300, stock: 90, description: \"G\u00fcncellenmi\u015f g\u00fc\u00e7l\u00fc bir i\u015f diz\u00fcst\u00fc bilgisayar\u0131.\" } }\n);\nexit<\/code><\/pre>\n<p>Birka\u00e7 saniye bekledikten sonra, Elasticsearch'\u00fc tekrar sorgulay\u0131n:<\/p>\n<pre><code class=\"language-bash\">curl -X GET \"localhost:9200\/products\/_search?pretty\"<\/code><\/pre>\n<p><code>Laptop X<\/code> belgesinin <code>price_details.value<\/code> alan\u0131n\u0131n <code>1300<\/code>, <code>stock<\/code> alan\u0131n\u0131n <code>90<\/code> ve <code>low_stock<\/code> alan\u0131n\u0131n hala <code>true<\/code> (\u00e7\u00fcnk\u00fc 90 < 100) oldu\u011funu ve <code>description<\/code> ile <code>short_description<\/code> alanlar\u0131n\u0131n g\u00fcncellendi\u011fini g\u00f6rmelisiniz. <code>last_updated<\/code> alan\u0131 da yeni bir zaman damgas\u0131 g\u00f6sterecektir. Bu, ger\u00e7ek zamanl\u0131 senkronizasyonun ve d\u00f6n\u00fc\u015f\u00fcm\u00fcn ba\u015far\u0131l\u0131 oldu\u011funu kan\u0131tlar.<\/p>\n<h3>Geli\u015fmi\u015f Konular ve En \u0130yi Uygulamalar<\/h3>\n<p>Bu rehber, temel bir senkronizasyon ve d\u00f6n\u00fc\u015f\u00fcm kurulumunu kapsasa da, \u00fcretim ortamlar\u0131 i\u00e7in baz\u0131 geli\u015fmi\u015f konular\u0131 ve en iyi uygulamalar\u0131 g\u00f6z \u00f6n\u00fcnde bulundurmak \u00f6nemlidir.<\/p>\n<h4>Hata Y\u00f6netimi ve Loglama<\/h4>\n<p>Transporter, \u00e7al\u0131\u015fma s\u0131ras\u0131nda kar\u015f\u0131la\u015ft\u0131\u011f\u0131 hatalar\u0131 standart \u00e7\u0131kt\u0131ya (stdout) yazar. \u00dcretim ortam\u0131nda, bu loglar\u0131 bir log y\u00f6netim sistemine (\u00f6rne\u011fin ELK Stack'in kendisi, Graylog, Splunk) y\u00f6nlendirmek kritik \u00f6neme sahiptir. Bu, senkronizasyon sorunlar\u0131n\u0131 tespit etmeyi ve gidermeyi kolayla\u015ft\u0131r\u0131r. Transporter'\u0131n <code>pipeline.js<\/code> dosyas\u0131nda <code>Log<\/code> fonksiyonu ile \u00f6zel loglama noktalar\u0131 da ekleyebilirsiniz.<\/p>\n<h4>Performans Optimizasyonu<\/h4>\n<p>B\u00fcy\u00fck veri setleri i\u00e7in senkronizasyon performans\u0131 \u00f6nemli olabilir.<\/p>\n<p>*   <strong>Batch Boyutu:<\/strong> Transporter, verileri hedef sisteme toplu (batch) olarak g\u00f6nderir. Performans i\u00e7in uygun batch boyutunu ayarlamak \u00f6nemlidir. Bu, genellikle Transporter'\u0131n kaynak ve hedef adapt\u00f6rlerinin ayarlar\u0131nda yap\u0131land\u0131r\u0131labilir.<br \/>\n*   <strong>\u0130ndeksleme Stratejisi:<\/strong> Elasticsearch'te indeksleme performans\u0131 i\u00e7in do\u011fru mapping ve shard\/replica ayarlar\u0131n\u0131 kullanmak \u00f6nemlidir.<br \/>\n*   <strong>A\u011f Gecikmesi:<\/strong> MongoDB ve Elasticsearch sunucular\u0131n\u0131n ayn\u0131 veri merkezinde veya yak\u0131n a\u011flarda olmas\u0131, gecikmeyi azaltarak performans\u0131 art\u0131r\u0131r.<br \/>\n*   <strong>MongoDB Oplog Boyutu:<\/strong> <code>tail: true<\/code> kullan\u0131rken, MongoDB'nin oplog'unun yeterli b\u00fcy\u00fckl\u00fckte oldu\u011fundan emin olun, aksi takdirde Transporter'\u0131n geride kalmas\u0131 durumunda veriler kaybolabilir.<\/p>\n<h4>G\u00fcvenlik<\/h4>\n<p>\u00dcretim ortam\u0131nda, veritaban\u0131 ba\u011flant\u0131lar\u0131n\u0131n g\u00fcvenli\u011fini sa\u011flamak esast\u0131r.<\/p>\n<p>*   <strong>Kimlik Do\u011frulama:<\/strong> <code>config.yaml<\/code> dosyas\u0131nda MongoDB ve Elasticsearch i\u00e7in kullan\u0131c\u0131 ad\u0131 ve \u015fifre bilgilerini sa\u011flamal\u0131s\u0131n\u0131z.<br \/>\n*   <strong>SSL\/TLS:<\/strong> Hassas veriler aktar\u0131l\u0131rken ba\u011flant\u0131lar\u0131n SSL\/TLS ile \u015fifrelendi\u011finden emin olun. Transporter, ba\u011flant\u0131 dizelerinde SSL\/TLS parametrelerini destekler.<br \/>\n*   <strong>Eri\u015fim Kontrol\u00fc:<\/strong> Transporter'\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 sunucuya ve veri tabanlar\u0131na eri\u015fimi k\u0131s\u0131tlay\u0131n.<\/p>\n<h4>Transporter'\u0131n Di\u011fer \u00d6zellikleri<\/h4>\n<p>Transporter, MongoDB ve Elasticsearch d\u0131\u015f\u0131nda bir\u00e7ok farkl\u0131 kaynak ve hedefi destekler (PostgreSQL, Kafka, SQS vb.). Ayr\u0131ca, daha karma\u015f\u0131k d\u00f6n\u00fc\u015f\u00fcmler i\u00e7in \u00f6zel Go adapt\u00f6rleri yazma yetene\u011fi de sunar. Daha fazla bilgi i\u00e7in Transporter'\u0131n resmi belgelerine ba\u015fvurman\u0131z \u00f6nerilir.<\/p>\n<h4>Ubuntu 16.04 ve S\u00fcr\u00fcm Y\u00f6netimi<\/h4>\n<p>Unutulmamal\u0131d\u0131r ki Ubuntu 16.04 LTS'nin standart deste\u011fi Nisan 2021'de sona ermi\u015ftir. Bu, g\u00fcvenlik g\u00fcncellemeleri ve hata d\u00fczeltmeleri almad\u0131\u011f\u0131 anlam\u0131na gelir. \u00dcretim ortamlar\u0131 i\u00e7in daha g\u00fcncel ve desteklenen bir i\u015fletim sistemi s\u00fcr\u00fcm\u00fcne (\u00f6rne\u011fin Ubuntu 20.04 LTS veya 22.04 LTS) ge\u00e7i\u015f yapman\u0131z \u015fiddetle tavsiye edilir. Bu makaledeki ad\u0131mlar, temel prensipler a\u00e7\u0131s\u0131ndan yeni s\u00fcr\u00fcmlerle de uyumlu olsa da, paket adlar\u0131 ve s\u00fcr\u00fcm uyumluluklar\u0131 farkl\u0131l\u0131k g\u00f6sterebilir. Ayn\u0131 durum MongoDB ve Elasticsearch s\u00fcr\u00fcmleri i\u00e7in de ge\u00e7erlidir. En iyi performans ve g\u00fcvenlik i\u00e7in her zaman en g\u00fcncel kararl\u0131 s\u00fcr\u00fcmleri kullanmaya \u00e7al\u0131\u015f\u0131n.<\/p>\n<h3>Sonu\u00e7<\/h3>\n<p>Bu makalede, MongoDB'deki verileri Transporter kullanarak Ubuntu 16.04 \u00fczerinde Elasticsearch'e nas\u0131l senkronize edece\u011fimizi ve bu s\u00fcre\u00e7te verileri nas\u0131l d\u00f6n\u00fc\u015ft\u00fcrece\u011fimizi ad\u0131m ad\u0131m \u00f6\u011frendik. MongoDB, Go dili, Elasticsearch ve Transporter'\u0131n kurulumundan, yap\u0131land\u0131rma dosyalar\u0131n\u0131n olu\u015fturulmas\u0131na ve ger\u00e7ek zamanl\u0131 senkronizasyonun do\u011frulanmas\u0131na kadar t\u00fcm s\u00fcre\u00e7leri detayl\u0131 bir \u015fekilde ele ald\u0131k.<\/p>\n<p>Veri d\u00f6n\u00fc\u015f\u00fcm\u00fc, kaynak ve hedef sistemler aras\u0131ndaki uyumsuzluklar\u0131 gidermek ve veriyi hedef sistemin ihtiya\u00e7lar\u0131na g\u00f6re optimize etmek i\u00e7in kritik bir ad\u0131md\u0131r. Transporter'\u0131n JavaScript tabanl\u0131 d\u00f6n\u00fc\u015f\u00fcm yetenekleri, bu s\u00fcreci olduk\u00e7a esnek ve g\u00fc\u00e7l\u00fc k\u0131lar. Bu entegrasyon sayesinde, uygulaman\u0131z\u0131n arama, analiz ve raporlama yeteneklerini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir, kullan\u0131c\u0131lar\u0131n\u0131za daha zengin ve h\u0131zl\u0131 bir deneyim sunabilirsiniz.<\/p>\n<p>Unutmay\u0131n, \u00fcretim ortamlar\u0131 i\u00e7in g\u00fcvenlik, performans ve hata y\u00f6netimi gibi geli\u015fmi\u015f konular\u0131 g\u00f6z ard\u0131 etmemek ve sistemlerinizi d\u00fczenli olarak g\u00fcncellemek b\u00fcy\u00fck \u00f6nem ta\u015f\u0131r. Bu rehber, veri senkronizasyonu yolculu\u011funuzda sa\u011flam bir ba\u015flang\u0131\u00e7 noktas\u0131 sa\u011flayacakt\u0131r.<\/body><\/p>\n","protected":false},"excerpt":{"rendered":"MongoDB&#8217;den Elasticsearch&#8217;e D\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f Veriyi Transporter ile Ubuntu 16.04 \u00dczerinde Senkronize Etme\nVeri senkronizasyonu, modern da\u011f\u0131t\u0131","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1468],"tags":[],"class_list":{"0":"post-30655","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ubuntu","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>MongoDB&#039;den Elasticsearch&#039;e D\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f Veriyi Transporter ile Ubuntu 16.04 \u00dczerinde Senkronize Etme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"MongoDB&#039;den Elasticsearch&#039;e D\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f Veriyi Transporter ile Ubuntu 16.04 \u00dczerinde Senkronize Etme\" \/>\n<meta property=\"og:description\" content=\"MongoDB&#039;den Elasticsearch&#039;e D\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f Veriyi Transporter ile Ubuntu 16.04 \u00dczerinde Senkronize Etme Veri senkronizasyonu, modern da\u011f\u0131t\u0131\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-09-30T06:41:05+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"18 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"MongoDB&#8217;den Elasticsearch&#8217;e D\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f Veriyi Transporter ile Ubuntu 16.04 \u00dczerinde Senkronize Etme\",\"datePublished\":\"2025-09-30T06:41:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/\"},\"wordCount\":2621,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"Ubuntu\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/\",\"name\":\"MongoDB'den Elasticsearch'e D\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f Veriyi Transporter ile Ubuntu 16.04 \u00dczerinde Senkronize Etme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-09-30T06:41:05+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"MongoDB&#8217;den Elasticsearch&#8217;e D\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f Veriyi Transporter ile Ubuntu 16.04 \u00dczerinde Senkronize Etme\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"MongoDB'den Elasticsearch'e D\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f Veriyi Transporter ile Ubuntu 16.04 \u00dczerinde Senkronize Etme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/","og_locale":"tr_TR","og_type":"article","og_title":"MongoDB'den Elasticsearch'e D\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f Veriyi Transporter ile Ubuntu 16.04 \u00dczerinde Senkronize Etme","og_description":"MongoDB'den Elasticsearch'e D\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f Veriyi Transporter ile Ubuntu 16.04 \u00dczerinde Senkronize Etme Veri senkronizasyonu, modern da\u011f\u0131t\u0131","og_url":"https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-09-30T06:41:05+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"18 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"MongoDB&#8217;den Elasticsearch&#8217;e D\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f Veriyi Transporter ile Ubuntu 16.04 \u00dczerinde Senkronize Etme","datePublished":"2025-09-30T06:41:05+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/"},"wordCount":2621,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["Ubuntu"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/","url":"https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/","name":"MongoDB'den Elasticsearch'e D\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f Veriyi Transporter ile Ubuntu 16.04 \u00dczerinde Senkronize Etme - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-09-30T06:41:05+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/mongodbden-elasticsearche-donusturulmus-veriyi-transporter-ile-ubuntu-16-04-uzerinde-senkronize-etme\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"MongoDB&#8217;den Elasticsearch&#8217;e D\u00f6n\u00fc\u015ft\u00fcr\u00fclm\u00fc\u015f Veriyi Transporter ile Ubuntu 16.04 \u00dczerinde Senkronize Etme"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30655","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=30655"}],"version-history":[{"count":1,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30655\/revisions"}],"predecessor-version":[{"id":30656,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/30655\/revisions\/30656"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=30655"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=30655"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=30655"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}