PARDUS 19.2 Sunucu Üzerinde Elasticsearch Kurulumu
Tags: debian, linux, pardus, elasticsearch
Published: 2020-05-11 10:11:06

**Elasticsearch**, Apache Lucene üzerinde geliştirilmiş açık kaynak kodlu, RESTful, dağıtılmış arama ve analitik altyapısıdır. Yayımlandığı 2010 yılından itibaren en popüler arama altyapısı haline gelmiştir ve genellikle günlük analitiği, tam metin arama, güvenlik zekası, iş analitiği ve operasyonel zeka kullanım örnekleri için tercih edilmektedir.

- Gerçek zamanlı veri sunar
- Gerçek zamanlı gelişmiş analiz yapabilmenize olanak verir
- Kolayca dağıtık yapı kurabileceğiniz bir yapı sunar
- Kendi içerisinde yüksek erişilebilirlik sunar
- Full-text search yapabilmenizi sağlar
- Döküman odaklı çalışır
- Geliştirici dostudur ve RESTful bir API arayüzü vardır.
- Lucene tabanlıdır

**Temel ElasticSearch Kavramları**
 1. `Index` : ElasticSearch üzerinde veri indekslenerek json formatında tutulur.

 2. `Type` : Veritabanı yönetim sistemlerinde kullandığımız tablolar gibi düşünebiliriz. Index içerisindeki verileri mantıksal olarak bölümlememizi sağlar. Örneğin e-ticaret sistemleri için ürünler,kategoriler,log bilgileri gibi verilerin her birini bir type olarak düşünebiliriz. Bir index içerisinde birden fazla type barındırabiliriz.

 3. `Mapping` :  Amacı, ilgili dökümanın arama motoruna nasıl aktarılacağının tanımlanmasıdır. Kısaca veritabanında isimlendirdiğimiz bir schema’dır diyebiliriz.

 4. `Document`: ElasticSearch’deki her bir kayda, yani row’a document denir.

 5. `Field` : Her bir döküman içindeki alana, field denir. Yani DB’deki bildiğiniz column.

 6. `Cluster` : Bir veya daha fazla düğümün bir koleksiyonudur. Cluster , tüm veriler için toplu dizin oluşturma ve arama yetenekleri sağlar. Yani tüm elastic search instancelarini bir arada tutan yapı

 7. `Node` : Elasticsearch’in tek bir çalışan örneğini ifade eder. Tek fiziksel ve sanal Sunucu; RAM, depolama ve işleme gücü gibi fiziksel kaynaklarının yeteneklerine bağlı olarak birden çok düğüm barındırır.

       7.a.  Master Node : Master node aynı cluster altındaki tüm nodeların masterı gibi çalışır. Master node index yaratma, silme ve tracking etme gibi işlemlerden sorumludur.
 
       7.b .Master Eligible Node : elastik searchteki bir property true seçilirse eligible node master node olarak ayarlanır. Eğerki master nodumuzun olduğu server fail olursa master eligible nodelar çalışır.

       7.c. Data node :  Datayı tutar ve data ile ilişkili operasyonları yürütür. CRUD, SEARCH ve AGGREGATİONS

       7.d. Ingest node :  Gerçek indekslenme meydana gelmeden önceki işlemleri gerçekleştiren dökümanç 

      7.e. Tribe Node : birden fazla clusteri bağlar ve bağlı clussterlar arasındaki search ve operasyonları yönetir.

8.`Shard` : Indexler yatay olarak parçalara ayrılır. Bu, her bir parçanın, belgenin tüm özelliklerini içerdiği, ancak dizinden daha az sayıda JSON nesnesi içerdiği anlamına gelir.

**Elasticsearch ile Neler Yapabiliriz?**



- [Search API]: Full-text arama için kullanabiliriz. 
- [Logstash, Kibana]: Günlüklerimizi (Logs) barındırmak ve içerlerinde arama yapmak için kullanabiliriz.
- [Aggregation]: Verilerimiz üzerinde neredeyse gerçek zamanlı analiz ve raporlar hazırlamak için kullanabiliriz.


##**Elasticsearch Kurulumu**##

**1) Java Yükleme**

Elasticsearch bir java uygulamasıdır, bu nedenle ilk adım Java’yı yüklemek olacaktır.
Pardus sisteminize Java'yı yüklemek için aşağıdaki komutları çalıştırın.

```
sudo apt update
sudo apt install default-jdk   -y
```

Ardından, yüklü Java sürümünü kontrol edin,
```
java --version 
```

Çıktı şöyle görünmelidir:

```
openjdk 11.0.7 2020-04-14
OpenJDK Runtime Environment (build 11.0.7+10-post-Debian-3deb10u1)
OpenJDK 64-Bit Server VM (build 11.0.7+10-post-Debian-3deb10u1, mixed mode, sharing)
```
**2) Elasticsearch Yükleme**
Elasticsearch resmi deposu Pardus’a eklenmelidir. Elasticsearch paketleri için `GPG` anahtarını içe aktarmak için aşağıdaki komutları çalıştırın. 

```
sudo apt install gnupg
wget -qO - https://artifacts.elastic.co/GPG-KEY-elasticsearch | sudo apt-key add -
sudo apt install apt-transport-https
```
> **Not**:

> **GPG ( GnuPG — GNU Privacy Guard);** GPL lisansına sahip, açık kaynak kodlu bir OpenPGP şifreleme standartıdır. OpenPGP ise, izni olmayan kişilerin görmesini istemediğiniz her türlü verinin bütünlüğünü ve güvenliğini sağlayan bir protokoldür. Basit olarak herhangi bir datanın şifrelenmesini ve çözülmesini kapsar.
 
> **gnupg** paketini yüklemezseniz aşağıdaki hatayı alırsınız:
`E: gnupg, gnupg2 and gnupg1 do not seem to be installed, but one of them is required for this operation`

> **wget**  komutundan sonra `OK` çıktısı alınmalıdır. Bu  anahtarın başarıyla içe aktarıldığı ve bu depodaki paketlerin güvenilir olarak kabul edileceği anlamına gelir.


Elasticsearch depo adresi Pardus sistemine ekleyin;
```
sudo apt install software-properties-common
add-apt-repository "deb https://artifacts.elastic.co/packages/7.x/apt stable main"
```

> **Note:**

> **Software-properties-common**  paketini yüklemeden add-apt-repository komutunu çalıştırırsanız aşağıdaki hatayı almış olacaksınız;
`-bash: add-apt-repository: komut yok`

Ya da alternatif olarak aşağıdaki komutla da depo adresini sisteme ekleyebilirsiniz;

```
echo "deb https://artifacts.elastic.co/packages/7.x/apt stable main" | sudo tee -a /etc/apt/sources.list.d/elastic-7.x.list

```

> **Not:** 
> Bu makaleyi yazarken, Elasticsearch'ün en son sürümü `7.6`. Elasticsearch'ün önceki bir sürümünü yüklemek istiyorsanız, `7.x` yukarıdaki komutta ihtiyacınız olan sürümle değiştirin .


Depo adresini sisteminize ekledikten sonra aşağıdaki komutları çalıştırın;

```
sudo apt update
sudo apt install elasticsearch  -y
```

**3) Pardus’ta Elasticsearch yapılandırma**


Elasticsearch yapılandırma dosyasını düzenleyerek bunu özelleştirebilirsiniz. Sık kullandığınız metin düzenleyiciyle yapılandırma dosyasında aşağıdaki değerleri güncelleyin;

```
cluster.initial_master_nodes: node-1
cluster.name: PardusCluster1 
node.name: “PardusNode1”
network.host: 0.0.0.0 
```


- **network.host** - Tüm arayüzleri dinlemek ve genel kullanıma sunmak için ağı 0.0.0.0 olarak ayarlayın. LAN erişimi için kullanabilirsiniz.
- **cluster.name** - Kümenin adı.
- **node.name** - Bir kümede tanımlanacak düğümün adı

> **Not:** 
> `cluster.initial_master_nodes: node-1` satırını eklemezseniz  aşağıdaki hata çıktısı ile karşılaşacaksınız
`“curl: (7) Failed to connect to localhost port 9200: Connection refused”`


**4) Elasticsearch Servis Ayarları**
Elasticsearch'ü sistem açıldığında servisi otomatik olarak başlayacak şekilde yapılandırmak için aşağıdaki komutu çalıştırın;

```
sudo /bin/systemctl enable elasticsearch.service


Synchronizing state of elasticsearch.service with SysV service script with /lib/systemd/systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable elasticsearch
Created symlink /etc/systemd/system/multi-user.target.wants/elasticsearch.service → /lib/systemd/system/elasticsearch.service.

```


Elasticsearch aşağıdaki gibi başlatılabilir ve durdurulabilir;

```
sudo systemctl start elasticsearch.service
sudo systemctl stop elasticsearch.service
```


**5) Elasticsearch Kurulumunu Test Edin**

Elasticsearch'ün çalıştığını doğrulamak `curl` komutu ile  localhost'ta 9200 numaralı bağlantı noktasına bir HTTP isteği göndermek için kullanın;

Pardus’ta yüklü olarak gelmediğinden dolayı önce curl paketini kurunuz;

```
sudo apt install curl
```

Şimdi curl komutunu çalıştırınız;

```
curl -X GET "localhost:9200/"
```



Çıktı şöyle görünecektir;

`Terminal üzerinden:`
```
{
  "name" : "PardusNode1",
  "cluster_name" : "PardusCluster1",
  "cluster_uuid" : "_na_",
  "version" : {
    "number" : "7.6.2",
    "build_flavor" : "default",
    "build_type" : "deb",
    "build_hash" : "ef48eb35cf30adf4db14086e8aabd07ef6fb113f",
    "build_date" : "2020-03-26T06:34:37.794943Z",
    "build_snapshot" : false,
    "lucene_version" : "8.4.0",
    "minimum_wire_compatibility_version" : "6.8.0",
    "minimum_index_compatibility_version" : "6.0.0-beta1"
  },
  "tagline" : "You Know, for Search"
}
```

`Tarayıcı üzerinden:`

![Alt Text](https://dev-to-uploads.s3.amazonaws.com/i/yeagbj4yjja5tdo1bu49.png)

Elasticsearch Pardus Sistemine başarıyla kuruldu. 
Elasticsearch hakkında daha fazla bilgi edinmek için resmi [dökümantasyon](www.elastic.co) sayfasını ziyaret edin .