ElasticSearch Nedir?
ElasticSearch Apache Lucene altyapısından geliştirilmiş, hafif, kolay kurulan, açık kaynak kodlu, ücretsiz, ölçeklendirilebilen bir arama motorudur. Java tabanlı olarak geliştirilen ElasticSearch RestfulAPI üzerinden hizmet vermekte, 3.part görsel araçları ve güvenlik seçenekleri ile çok hızlı ve kullanışlıdır. RestfulAPI üzerinden hizmet verdiği için tüm programlama dilleri ile kullanılabilmektedir. Hem Windows Hem Linux’da kolayca çalışabilir.
ElasticSearch Apache Lucence’den üretilmiş Solr arama motoruna göre daha az karmaşık, daha az ayrıntılıdır ama Solr kadar başarılıdır(link). ElasticSearch 1.4.0 Linux Deposundan (Repository) APT paket yönetim aracı ile direk yüklenebilmektedir.
İlk çıkış amacı olan dağıtık ve ölçeklenebilir büyük veride çalışabilen bir arama motoru oluşturmaktı. ElasticSearch gerçek zamanlı olarak indexleme yapmaktatır.
ElasticSearch kullananlar arasında Wikimedia, Mozilla, Foursquare, GitHub, CERN, Stack Exchange gibi internetteki birçok büyük kuruluş vardır.
Bizce ElasticSearch’ün fark yaratan unsurlarının başında Hızlı Kurulum ve Kolay Configuration gelmektedir. Sadece birkaç saat içinde elasticsearch’i kurup veri indexleyebilirsiniz. ElasticSearch’i muadillerinden farklı yapan bir unsur da verinin tipi ve şekline göre otomatik olarak en uygun mapping’i yapmasıdır. Buda işinizi kolaylaştırıp hızlandıran etkendir.
ElasticSearch kolay olduğu kadar durum bazlı özelleşedebilir. Tüm ayar ve özellikleri değiştirebilir ve arama kabiliyetinizi süreç içinde yükseltip başarı oranınızı arttırabilirsiniz.
ElasticSearch’de Cluster yapmak çok kolaydır. Bu da elasticsearch’in kullanım oranını arttıran başlıca etkenlerdendir. Böylece çok kısa bir uğraş ile ElasticSearch de cluster’a sahip olup büyük miktarda veriyi işleyebilirsiniz.
ElasticSearch’e veri aktarmak çok kolaydır. ElasticSearch’in kendi kütüphaneleri ile veya RestfulAPI kullanarak kendi yazacağınız program ile istediğiniz özellikte veri yükleyebilirsiniz. Bunun yanında Twitter- Wikipedia gibi bilinen veri kaynaklarından direk veri aktarımı için River gibi yapıları mevcuttur. Bu sayede bu bilgi kaynaklarından çok hızlı şekilde veri aktarabilirsiniz. Veri aktarımı yapılan kaynaklar sadece web siteleri değil MongoDB gibi NoSQL veritabanlarından da aktarım yapabilirsiniz.
ElasticSearch açık kaynaklı olmasının bir avantajı isteyen herkesin ElasticSearch için plugin yazabilmesidir. Bu plugin’ler aracılığı ile monitoring işini kolayca yapabilir veya kolayca cluster’larınızı manage edebilirsiniz.
ElasticSearch geniş bir dökümantasyon ve çok fazla 3.part kaynağı ile developer’ların geliştirmesine hazır ve nazırdır 🙂
Sitemizde ElasticSearch ile ilgili bolca bilgi ve örnek bulabilirsiniz.
hocam paylaşımlı hosta kurulabilecek benzer bir arama motoru varmıdır?
Maalesef standart hosting içinde çalışabilen bildiğim bir arama motoru yok.
İhtiyacına binaen https://www.elastic.co/found gibi elasticsearch hosting’leri kiralayıp kullanabilirsin.
Elasticsearch de yedekleme işlemi yapmaya çalışıyorum. Öncelikle repository oluşturmam gerekiyor Kod şu şekilde:
PUT /_snapshot/backup
{
“type”: “fs”,
“settings”: {
“location”: “/root/backup”,
“compress”: true
}
}
Elasticsearch.yml dosyasında tanımladığım yol şu şekilde:
# path.repo: [/root/backup]
Centos üzerinde marvel eklentisinde denediğimde şu hatayı alıyorum:
{
“error”: {
“root_cause”: [
{
“type”: “repository_exception”,
“reason”: “[backup] failed to create repository”
}
],
“type”: “repository_exception”,
“reason”: “[backup] failed to create repository”,
“caused_by”: {
“type”: “creation_exception”,
“reason”: “Guice creation errors:\n\n1) Error injecting constructor, RepositoryException[[backup] location [/root/backup] doesn’t match any of the locations specified by path.repo because this setting is empty]\n at org.elasticsearch.repositories.fs.FsRepository.(Unknown Source)\n while locating org.elasticsearch.repositories.fs.FsRepository\n while locating org.elasticsearch.repositories.Repository\n\n1 error”,
“caused_by”: {
“type”: “repository_exception”,
“reason”: “[backup] location [/root/backup] doesn’t match any of the locations specified by path.repo because this setting is empty”
}
}
},
“status”: 500
}
ne yapmalıyım ?
Merhaba
İlk önce hangi elasticsearch sürümünü kullanıyorsunz?
Üsteki soruya bağımlı olarak marvel sürümünüz nedir?
elasticsearch.yml güncellemesini eğer elasticsearch’ün bulunduğu harddisk dışında biryere backup yapmak istediğinizde kullanmalısınız. Sizin durumunuz bunu mu gerektiriyor?
Eğer gerektirmiyorsa elasticsearch.yml ayarını yapmanıza gerek yoktur. Birde backup alacağınız klasörün chmod ayarlarına kontrol etmenizi tavsiye edebilirim. Test amaçlı 777 verip deneyebilirsiniz. Genelde hatalar ondanda kaynaklanabiliyor.
merhaba,
Yorumunuzu şimdi gördüm. Ben bu sorunu init.d dosyasında elasticsearch içinde REPO_DIR değişkeni tanımlayarak çözdüm.
REPO_DIR=”/Home/backup”
-Des.default.path.repo=$REPO_DIR
Ancak şimdi Centos 7 ye geçtim ve programlarımı güncelledim. Ardından repository denedim fakat aynı problemle karşılaştım Bu sefer REPO_DIR tanımlayarak da çözemiyorum.
Şuan Elasticsearch 2.3.0 ve Kibana 4.5.0 eklentisi olan Sense 2.0.0 kullanıyorum. Dosya izinleri ile ilgili bir sorun yok. İzinleri tanımladım.
Ben Centos 7 üzerinde çalışıyorum ve yedeklemeyi de buraya yapmak istiyorum.
Öncelikle /backup klasörü içine my_backup klasörü açıp bu klasöre ait tüm izinleri verdim(chmod 777 my_backup). Sonra etc/elasticsearch.yml içine :
path.repo: [“/backup/my_backup”] tanımladım. Son olarak Sense editörde snapshot ve repository işlemini tamamladım.
Snapshot işlemi:
PUT /_snapshot/my_backup1
{
“type”: “fs”,
“settings”: {
“location”: “/backup/my_backup”,
“compress”: true
}
şimdi mevcut indeximi kapatıyorum:
POST /ihaleler/_close
Restore işlemi:
GET /_snapshot/my_backup1/snapshot_1/_restore
{
“indices” : “ihaleler”,
“ignore_unavaible” : “true”,
“include_global_state”: “false”,
“rename_pattern”: “index_(.+)”,
“rename_replacement”: “restored_index_$1”
}
İndeximi tekrar açtım:
POST /ihaleler/_open
Doğru çalıştı ve my_backup klasörü içinde yedeğim oluştu.
Teşekkür ederim yinede. İyi çalışmalar dilerim.
Merhaba Hilal Hanım
Problemin çözüldüğüne sevindim, çözümü bizle paylaştığınız için teşekkür ederiz.
İyi Çalışmalar Dileriz
Merhabalar elasticsearch dünyasına yeni adım atıyorum,windows ortamlarda kullanılabilecek şekilde sqlserver management studio, yada oracle için toad gibi daha kolay administration yapabileceğim,görsel kolaylık sağlayan önerebileceğiniz bir tool var mıdır?
Maalesef Toad veya Management Studio gibi gelişmiş tool’lar elasticsearch için yok. O Tool’lara en çok benzer sanırım “head” plugin’i. Ücretli Plugin’lerde Marvel ve Kibana belki biraz o işleri yapıyor.
Merhabalar, elasticsearch’un .net için olan nest kütüphanesi ( visual studio c#) ile yapılmış bir örnek demonuz varmıdır elinizde?Teşekkürler