> ## Documentation Index
> Fetch the complete documentation index at: https://docs.apinizer.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Elasticsearch Sürüm Yükseltme

> Ubuntu işletim sistemine sahip sunucuda Elasticsearch 7.9.2'den Elasticsearch 7.17.29 güncellemeyi adım adım açıklar. Ubuntu 24.04 LTS işletim sistemi kullanılması önerilir.

## Kuruluma Başlamadan Önce Yapılması Gereken Kontroller

<Warning>
  **Önemli**

  Güncelleme sırasında oluşabilecek sistemsel ya da kullanıcı kaynaklı hatalara karşı, işleme başlamadan önce ilgili sunucularda snapshot (yedek) alınmalıdır.
</Warning>

<Info>
  **Elasticsearch kurulum dosyası:**

  [https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.29-linux-x86\_64.tar.gz](https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.29-linux-x86_64.tar.gz)

  Not: Bu adrese erişim zorunlu değildir. Eğer sunucu dış internet erişimine sahip değilse, ilgili dosya farklı bir ortamdan indirilerek manuel olarak sunucuya aktarılabilir.
</Info>

## Yeni Elasticsearch Sürümünün İndirilmesi ve Hazırlanması

```bash theme={null}
# Aşağıdaki adımlar güncellenecek Elasticsearch sunucusunda yapılmalıdır.

# Elasticsearch kullanıcısına geçilerek işlemlere devam edilir
sudo su - elasticsearch
cd /opt/elasticsearch

# Yeni Elasticsearch sürümünü indirin
sudo wget https://artifacts.elastic.co/downloads/elasticsearch/elasticsearch-7.17.29-linux-x86_64.tar.gz

# İndirilen dosyayı açın
sudo tar -xzf elasticsearch-7.17.29-linux-x86_64.tar.gz

# Dosya sahipliğini ve izinlerini ayarlayın
sudo chown -Rf elasticsearch:elasticsearch /opt/elasticsearch
sudo chmod -Rf 775 /opt/elasticsearch
```

## Elasticsearch Parametrelerinin Ortama Göre Ayarlanması

### 1. Yapılandırma Dosyasının Kopyalanması

Mevcut `elasticsearch.yml` dosyasındaki bilgileri yeni sürüme kopyalamanız gerekir.

**Mevcut yapılandırmayı görüntüleyin:**

```bash theme={null}
vi /opt/elasticsearch/elasticsearch-7.9.2/config/elasticsearch.yml
```

**Yeni sürüm yapılandırma dosyasını düzenleyin:**

```bash theme={null}
vi /opt/elasticsearch/elasticsearch-7.17.29/config/elasticsearch.yml
```

Mevcut yapılandırma dosyasındaki içeriği yeni dosyaya kopyalayın.

<Info>
  **Sertifika Dosyaları (Opsiyonel)**

  Eğer mevcut Elasticsearch kurulumunuzda SSL/TLS sertifikaları kullanılıyorsa, bu sertifikaları yeni sürüme kopyalamanız gerekir.

  ```bash theme={null}
    # Sertifika dizinini kontrol edin
    ls -la /opt/elasticsearch/elasticsearch-7.9.2/config/certs/

    # Eğer sertifika dosyaları varsa, yeni sürüme kopyalayın
    sudo cp -r /opt/elasticsearch/elasticsearch-7.9.2/config/certs /opt/elasticsearch/elasticsearch-7.17.29/config/

    # Dosya sahipliğini ayarlayın
    sudo chown -Rf elasticsearch:elasticsearch /opt/elasticsearch/elasticsearch-7.17.29/config/certs
  ```
</Info>

### 2. JVM Parametrelerinin Ayarlanması

Elasticsearch'ün kullanacağı JVM (Java Sanal Makinesi) değerleri ve diğer JVM parametrelerini mevcut elasticsearch'e göre ayarlamalısınız.

**Mevcut JVM ayarlarını görüntüleyin:**

```bash theme={null}
sudo vi /opt/elasticsearch/elasticsearch-7.9.2/config/jvm.options
```

**Yeni sürüm JVM ayarlarını düzenleyin:**

```bash theme={null}
sudo vi /opt/elasticsearch/elasticsearch-7.17.29/config/jvm.options
```

<Warning>
  **Önemli**

  Burada işletim sisteminin sahip olduğu RAM miktarının yarısına kadar çıkılabilir ve bu değer 32GB'ı aşmamalıdır. Mevcut elasticsearch'ün kullandığı RAM değerine göre aşağıdaki gibi girilmelidir.
</Warning>

```
-Xms8g
-Xmx8g
```

## Elasticsearch'i Linux Service Olarak Ayarlama

### 1. Yeni Service Script Dosyasının Oluşturulması

Yeni Elasticsearch sürümü için service script dosyasını oluşturun:

```bash theme={null}
sudo vi /opt/elasticsearch/elasticsearch-7.17.29/bin/elasticsearch-service.sh
```

Aşağıdaki içeriği dosyaya yapıştırın:

```bash theme={null}
#!/bin/sh
SERVICE_NAME=elasticsearch
PATH_TO_APP="/opt/elasticsearch/elasticsearch-7.17.29/bin/$SERVICE_NAME"
PID_PATH_NAME="/opt/elasticsearch/elasticsearch-7.17.29/bin/$SERVICE_NAME.pid"
SCRIPTNAME=elasticsearch-service.sh
ES_USER=$SERVICE_NAME
ES_GROUP=$SERVICE_NAME

case $1 in
    start)
        echo "Starting $SERVICE_NAME ..."
        if [ ! -f $PID_PATH_NAME ]; then
            mkdir $(dirname $PID_PATH_NAME) > /dev/null 2>&1 || true
            chown $ES_USER $(dirname $PID_PATH_NAME)
            $SUDO $PATH_TO_APP -d -p $PID_PATH_NAME
            echo "Return code: $?"
            echo "$SERVICE_NAME started ..."
        else
            echo "$SERVICE_NAME is already running ..."
        fi
    ;;
    stop)
        if [ -f $PID_PATH_NAME ]; then
            PID=$(cat $PID_PATH_NAME);
            echo "$SERVICE_NAME stopping ..."
            kill -15 $PID;
            echo "$SERVICE_NAME stopped ..."
            rm $PID_PATH_NAME
        else
            echo "$SERVICE_NAME is not running ..."
        fi
    ;;
    restart)
        if [ -f $PID_PATH_NAME ]; then
            PID=$(cat $PID_PATH_NAME);
            echo "$SERVICE_NAME stopping ...";
            kill -15 $PID;
            sleep 1;
            echo "$SERVICE_NAME stopped ...";
            rm -rf $PID_PATH_NAME
            echo "$SERVICE_NAME starting ..."
            mkdir $(dirname $PID_PATH_NAME) > /dev/null 2>&1 || true
            chown $ES_USER $(dirname $PID_PATH_NAME)
            $SUDO $PATH_TO_APP -d -p $PID_PATH_NAME
            echo "$SERVICE_NAME started ..."
        else
            echo "$SERVICE_NAME is not running ..."
        fi
    ;;
    *)
        echo "Usage: $SCRIPTNAME {start|stop|restart}" >&2
        exit 3
    ;;
esac
```

Script dosyasına çalıştırma izni verin:

```bash theme={null}
sudo chmod +x /opt/elasticsearch/elasticsearch-7.17.29/bin/elasticsearch-service.sh
sudo chmod -Rf 775 /opt/elasticsearch/elasticsearch-7.17.29/*
```

### 2. Systemd Service Dosyasının Güncellenmesi

Önce mevcut Elasticsearch servisini durdurun:

```bash theme={null}
sudo systemctl stop elasticsearch
```

Systemd service dosyasını yeni sürüm için güncelleyin:

```bash theme={null}
sudo vi /etc/systemd/system/elasticsearch.service
```

Aşağıdaki içeriği dosyaya yazın:

```ini theme={null}
[Unit]
Description=ElasticSearch Server
After=network.target
After=syslog.target

[Install]
WantedBy=multi-user.target

[Service]
Type=forking
ExecStart=/opt/elasticsearch/elasticsearch-7.17.29/bin/elasticsearch-service.sh start
ExecStop=/opt/elasticsearch/elasticsearch-7.17.29/bin/elasticsearch-service.sh stop
ExecReload=/opt/elasticsearch/elasticsearch-7.17.29/bin/elasticsearch-service.sh restart
LimitNOFILE=65536
LimitMEMLOCK=infinity
User=elasticsearch
```

### 3. Yeni Elasticsearch Servisinin Başlatılması

```bash theme={null}
# Systemd daemon'ı yeniden yükleyin
sudo systemctl daemon-reload

# Yeni Elasticsearch servisini başlatın
sudo systemctl start elasticsearch

# Servis durumunu kontrol edin
sudo systemctl status elasticsearch

# Sistemi açılışta otomatik başlaması için aktif edin
sudo systemctl enable elasticsearch
```
