> ## 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ık Kullanılan Komutlar

> Elasticsearch indekslerini sorgulama, güncelleme, silme ve yönetme işlemlerini gerçekleştirebilir. İndeks ayarlarını değiştirebilir, shard ve replica yönetimi yapabilir, snapshot işlemlerini gerçekleştirebilir ve cluster durumunu izleyebilir.

<Warning>
  Production ortamlarında veriye doğrudan müdahale edilmesi hiçbir zaman önerilmemektedir. Production ortamlarında yapılacak her türlü işlem veya değişiklik öncesinde, ilgili adımların mutlaka test ortamında denenmesi ve sistemin güncel yedeğinin alınması gerekmektedir.
</Warning>

## İndeks Görme ve Silme

### Doküman Sayısını Görme

```bash theme={null}
curl -X GET "<ELASTICSEARCH_IP>:9200/<INDEX_KEY>/_doc/_count"
```

### Where Koşullu İndeks Görme

```bash theme={null}
curl -X GET "<ELASTICSEARCH_IP>:9200/*/_search?pretty=true&q=apn:XYS"
```

```bash theme={null}

curl -X GET "<ELASTICSEARCH_IP>:9200/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "query": {
    "bool": {
      "must": [
        {
          "match": {
            "apn": "TEST GW"
          }
        },
        {
          "range": {
            "@timestamp": {
              "gte": "now-7d/d",
              "lt": "now-5d/d"
            }}}]}}}'
```

```bash theme={null}

curl -X GET "<ELASTICSEARCH_IP>:9200/_search?pretty" -H 'Content-Type: application/json' -d '{
  "script_fields": {
    "content_type": {
      "script": {
        "lang": "painless",
        "source": "if (params._source == null || params._source.tch == null) return null; for (def h : params._source.tch) { if (h.k == 'Content-Type') return h; } return null;"
      }
    }
  }
}'
```

### Requestteki CID ile Responsedaki CID Aynı Olmayan Kayıtları Script ile Bulan Sorgu

```bash theme={null}
curl --location --request GET 'http://<ELASTICSEARCH_IP>:9200/_search'  --data-raw '{
  "query": {
    "bool": {
      "filter": [
        {
          "script": {
            "script": {
              "lang": "painless",
              "source": "doc.containsKey('aci.keyword') != doc.containsKey('fbarh[1].keyword')"
            }
          }
        },
        {
            "range":{
                "@timestamp":{
                    "gte":"2025-11-28T16:30:32.000Z"
                }
            }
        }
      ]
    }
  }
}'
```

### Belirli Zaman Aralığında Saniye Bazlı Gelen Requestlerin Listesi

```bash theme={null}
curl --location --request GET '<ELASTICSEARCH_IP>:9200/_search'  --data-raw '{
    "query":{
        "bool":{
            "filter":[
                {
                    "match":{
                        "apn":"Test GW"
                    }
                },
                {
                    "range":{
                        "@timestamp":{
                            "gte":"2025-11-04T09:36:00.183Z",
                            "lte":"2025-11-04T12:36:00.183Z"
                        }
                    }
                }
            ]
        }
    },
 
    "aggs":{
        "reqs_over_time":{
            "date_histogram":{
                "field": "@timestamp",
                "fixed_interval": "6s"
            }
        }
    }
}'
```

### Correlation ID'ye Göre Belirli Dokümanları Bulma

```bash theme={null}
curl -X GET "<ELASTICSEARCH_IP>:9200/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "query": {
    "match": {
      "aci": "c3d8523e-e3ac-497b-ac7a-76853198c239"
    }
  }
}'
```

### İndeks Adına Göre Silme

```bash theme={null}
curl -X DELETE "<ELASTICSEARCH_IP>:9200/<INDEX_KEY>"
```

### Verilen Kelimenin Geçtiği İndeksleri Silme

```bash theme={null}
curl -X DELETE "<ELASTICSEARCH_IP>:9200/*metric*"
```

## Elasticsearch Yığınının Read\_Only Durumunu Değiştirmek

Tüm indeksler için:

```bash theme={null}
curl -X PUT "<ELASTICSEARCH_IP>:9200/_all/_settings?wait_for_completion=false" -H "Content-Type: application/json" -d'
{
  "index.blocks.read_only_allow_delete": null,
  "index.blocks.write": null
}'
```

Sadece bir indeks için:

```bash theme={null}
curl -X PUT "<ELASTICSEARCH_IP>:9200/<INDEX_KEY>/_settings?pretty" -H 'Content-Type: application/json' -d'
{
  "index.blocks.read_only_allow_delete": null,
  "index.blocks.write": null
}'
```

## Rollover ile Yeni İndekse Geçme

```bash theme={null}
curl -X POST "http://<ELASTICSEARCH_IP>:9200/apinizer-log-apiproxy-<INDEX_KEY>/_rollover"
```

## Arama (Search)

### Belirli Indeksteki Dokümanları Sorgulama

```bash theme={null}
curl -X GET "<ELASTICSEARCH_IP>:9200/<INDEX_KEY>/_search?pretty=true&q=*:*"
```

### Belirli Kritere Göre Indeksteki Dokümanları Sorgulama

```bash theme={null}
curl -X GET "<ELASTICSEARCH_IP>:9200/*/_search?pretty=true&q=apn:Petstore+API"
```

### Belirli Zaman Aralığına Göre Dokümanları Sorgulama

```bash theme={null}
curl --location --request GET '<ELASTICSEARCH_IP>:9200/_search'  --data-raw '{
    "query":{
        "bool":{
            "must":[
                {
                    "match":{
                        "apn": "Test GW"
                    }
                },
 
                {
                    "range":{
                        "@timestamp":{
                            "gte":"now-5M/M",
                            "lte":"now/d"
                        }
                    }
                }
            ]
        }
    }
}'
```

### Belirli Kriterlere Göre Doküman Sonuçlarını Aggregate Etme

```bash theme={null}
curl --location --request GET 'http://<ELASTICSEARCH_IP>:9200/_search'  --data-raw '
 
{
    "query":{
        "bool":{
            "filter":[
                {
                    "match": {
                        "apn":"Test GW"
                    }
                },
                {
                    "range":{
                        "@timestamp":{
                            "gte":"2025-12-28T15:08:00.000Z",
                            "lte":"2025-12-30T15:08:00.000Z"
                        }
                    }
                }
            ]
        }
    },
    "aggs": {
        "reqs_over_time":{
            "date_histogram":{
                "field":"@timestamp",
                "fixed_interval":"10s"
            }
        }
    }
}'
```

### Son 1 Günde, Her Bir Yetkili Kullanıcının, Her Bir Api Proxy'e Attığı İsteklerin Sayısını Bulma

```bash theme={null}
curl -X GET "<ELASTICSEARCH_IP>:9200/<INDEX_KEY>/_search?pretty" -H 'Content-Type: application/json' -d'
{
  "size": 0,
  "query": {
    "range": {
       "@timestamp": {
            "gte": "now/d",
            "lt": "now+1d/d"
        }
    }
  },
  "aggs": {
    "by_uok": {
      "terms": { "field": "uok", "size": 1000 },
      "aggs": {
        "by_apn": {
          "terms": {
            "field": "apn",
            "size": 1000,
            "missing": "BelirliBirApiProxyeGitmeyenler"
          }
        }
      }
    }
  }
}
```

## Güncelleme (Update)

### Dokümanı Güncelleme

```bash theme={null}
curl -X PUT "<ELASTICSEARCH_IP>:9200/<INDEX_KEY>/doc/1?pretty" -H 'Content-Type: application/json' -d'
{
  "name": "John Doe"
}'
```

### Belirlenen Alanlardan Spesifik Bir Elementi Silme

```bash theme={null}
curl -X POST "<ELASTICSEARCH_IP>:9200/_update_by_query?pretty" -H 'Content-Type: application/json' -d'
{
  "script": {
    "source": "ctx._source.headerRequestFromClient.remove('\''header-name-1'\''); ctx._source.headerRequestToTarget.remove('\''header-name-2'\'');"
  },
  "query": {
    "match_all": {}
  }
}'
```

### Kriterlere Göre Belirli Değerleri Silme

```bash theme={null}
curl -X  POST "<ELASTICSEARCH_IP>:9200/*/_update_by_query?pretty&conflicts=proceed&requests_per_second=200" -H 'Content-Type: application/json' -d'
{
  "query": {
    "bool" : {
      "filter": {
        "exists": {
            "field": "headerRequestFromClient.user_username"
          }
      },
      "must_not" : {
       "term": {
          "headerRequestFromClient.user_password": ""
        }
      }
    }
  },
  "script":  "ctx._source.headerRequestFromClient.remove(\"user_password\");"
}
```

<Info>
  * *Execution Reject* hatası, `requests_per_second` anahtarının değeriyle önlenecektir.
  * Toplu İşlem Boyutu varsayılan olarak 1000'dir. İki istek arasındaki bekleme süresi 5 (=1000/200) verilerek ayarlanır.
</Info>

```bash theme={null}
curl -X POST "http://<ELASTICSEARCH_IP>:9200/*/_update_by_query?conflicts=proceed&wait_for_completion=true" -H 'Content-Type: application/json' -d'
{
  "script": {
    "inline": "ctx._source.remove('\''apmi'\''); ctx._source.remove('\''tba'\''); ctx._source.remove('\''tcb'\''); ctx._source.remove('\''fbarb'\''); ctx._source.remove('\''tbah'\''); ctx._source.remove('\''fbarh'\''); ctx._source.remove('\''tch'\'');",
    "lang": "painless"
  },
  "query": {
    "bool": {
      "must": [
        {
          "range": {
            "@timestamp": {
              "gte": "2019-02-01T20:03:12.963",
              "lte": "2019-04-30T20:03:12.963"
            }
          }
        }
      ],
      "adjust_pure_negative": true,
      "boost": 1
    }
  }
}'
```

### Belirli Bir Rest Uç Adrese Ait Loglardan Yanıt Body Alanlarının Silinmesi

<Note>
  Bu uç adres openapi ya da no-spec cinsinde bir API proxy içerisinde olarak tanımlı olmalı. Birden fazla serviste aynı uç adres varsa sorguya api proxy ismi de eklenmelidir.
</Note>

```bash theme={null}
curl --location --request POST 'http://<ELASTICSEARCH_IP>:9200/<INDEX_KEY>/_update_by_query?pretty' --header 'Content-Type:application/json' --data-raw '{
  "script": {
    "source": "ctx._source.remove('\''tcb'\'');ctx._source.remove('\''fbarb'\'')",
    "lang": "painless"
  },
  "query": {
    "term": {
      "apmn": "/anApiProxyEndpoint"
    }
  }
}'
```

### Belirli Bir Tarihe Kadar Olan Loglardan Bazı Body Alanlarının Silinmesi

```bash theme={null}
curl -X POST "<ELASTICSEARCH_IP>:9200/.ds-apinizer-log-apiproxy-<LOG_KEY>-000*/_update_by_query?pretty" -H 'Content-Type: application/json' -d '
{
  "query": {
    "bool": {
      "filter": [
        {
          "range": {
            "@timestamp": {
              "lte": "2024-04-20T00:00:00.000Z"
            }
          }
        }
      ]
    }
  },
  "script": {
    "source": "ctx._source.remove(\"tba\"); ctx._source.remove(\"fbarb\"); ctx._source.remove(\"tcb\")"
  }
}'
```

<Note>
  Tarih yerine Api Proxy id değerine göre güncelleme yapmak isterseniz `"range": { "@timestamp": { "lte": "2024-04-20T00:00:00.000Z" } }` kısmı yerine `"match": { "api": "64ac03067e8f7400cf4adbdd" }` filtresini ekleyebilirsiniz.
</Note>

<Note>
  Elasticsearch veri yapısını incelemek ve silinecek alanları belirlemek için [API Trafiği Log Kaydı Veri Yapısı](/tr/analytic/api-trafigi-log-kaydi-veri-yapisi) sayfasına bakabilirsiniz.
</Note>

## Replica Sayısı Ayarlama

Template ile:

```bash theme={null}
curl -X PUT "<ELASTICSEARCH_IP>:9200/_template/template_genel?pretty" -H 'Content-Type: application/json' -d'
{
  "index_patterns": ["apinizer-log-*", "apinizer-metric-*", "mongo-db-*"],
  "data_stream": { }, 
  "template": {
    "settings": {
      "index": {
        "number_of_shards": 1,
        "number_of_replicas": 0
      }
    }
  },
  "priority": 501
}'
```

Tüm indeksler için:

```bash theme={null}
curl -X PUT "<ELASTICSEARCH_IP>:9200/*/_settings" -H 'Content-Type: application/json' -d'
{
  "index": {
    "number_of_replicas": 0
  }
}'
```

## Shard Allocation

```bash theme={null}
curl -X PUT "<ELASTICSEARCH_IP>:9200/_cluster/settings" -H 'Content-Type: application/json' -d'
{
  "transient": {
    "cluster.routing.allocation.enable": "all"
  }
}'
```

## Shard Limiti Arttırma

```bash theme={null}
curl -X PUT "http://<ELASTICSEARCH_IP>:9200/_cluster/settings" -H 'Content-Type: application/json' -d'
{
  "persistent": {
    "cluster.routing.allocation.total_shards_per_node": 2000,
    "cluster.max_shards_per_node": 2000
  }
}'
```

## Log Seviyesi Değiştirme

```bash theme={null}
curl -X PUT "<ELASTICSEARCH_IP>:9200/_cluster/settings" -H 'Content-Type: application/json' -d'{"transient":{"logger._root":"DEBUG"}}'
curl -X PUT "<ELASTICSEARCH_IP>:9200/_cluster/settings" -H 'Content-Type: application/json' -d'{"transient":{"logger._root":"INFO"}}'
```

## ShowLog Ayarları

```bash theme={null}
curl -X PUT "<ELASTICSEARCH_IP>:9200/*log*/_settings?pretty" -H 'Content-Type: application/json' -d'
 {
  "index.search.slowlog.threshold.fetch.trace": "200ms",
  "index.search.slowlog.threshold.query.trace": "200ms"
}'
```

## Elasticsearch Shard ve Replikasyon Yönetimi

<AccordionGroup>
  <Accordion title="Shard Tahsisini Etkinleştirme">
    ```bash theme={null}
    curl -X PUT "<ELASTICSEARCH_IP>:9200/_cluster/settings" -d '{
      "transient": {
        "cluster.routing.allocation.enable": "all"
      }
    }' --header 'Content-Type:application/json'
    ```
  </Accordion>

  <Accordion title="Başarısız Shard'ları Yeniden Deneme">
    ```bash theme={null}
    curl -X POST "<ELASTICSEARCH_IP>:9200/_cluster/reroute?retry_failed" --header 'Content-Type:application/json'
    ```
  </Accordion>

  <Accordion title="Küme Tahsis Açıklamasını Sorgulama">
    ```bash theme={null}
    curl -X GET "<ELASTICSEARCH_IP>:9200/_cluster/allocation/explain?pretty"
    ```
  </Accordion>

  <Accordion title="İndeks Replikasyon Ayarlarını Güncelleme">
    ```bash theme={null}
    curl -X PUT "<ELASTICSEARCH_IP>:9200/_settings" -d '{
      "index": {
        "number_of_replicas": 0
      }
    }' --header 'Content-Type:application/json'
    ```
  </Accordion>
</AccordionGroup>

## Diğer

<AccordionGroup>
  <Accordion title="_cat APIs">
    ```bash theme={null}
    curl -X GET "<ELASTICSEARCH_IP>:9200/_cat/indices/*?v&s=index&pretty"

    curl -X GET "<ELASTICSEARCH_IP>:9200/_cat/thread_pool?v&h=id,node_name,ip,name,core,queue,rejected,completed,max"
    ```
  </Accordion>

  <Accordion title="_nodes APIs">
    ```bash theme={null}
    curl -X GET "<ELASTICSEARCH_IP>:9200/_nodes/os?pretty"

    curl -X GET "<ELASTICSEARCH_IP>:9200/_nodes/jvm?pretty"

    curl -X GET "<ELASTICSEARCH_IP>:9200/_nodes/thread_pool?pretty"

    curl -X GET "<ELASTICSEARCH_IP>:9200/_nodes/stats/process?filter_path=**.max_file_descriptors"
    ```
  </Accordion>

  <Accordion title="_cluster APIs">
    ```bash theme={null}
    curl -X GET "<ELASTICSEARCH_IP>:9200/_cluster/stats?pretty"

    curl -X GET "<ELASTICSEARCH_IP>:9200/_cluster/state?pretty=true" > result.json
    ```
  </Accordion>

  <Accordion title="Flush">
    ```bash theme={null}
    curl -X POST "<ELASTICSEARCH_IP>:9200/*log*/_flush/synced?pretty"
    ```
  </Accordion>

  <Accordion title="Log Yazım Engelinin Kaldırılması">
    ```bash theme={null}
    curl -X PUT "http://<ELASTICSEARCH_IP>:9200/*log*/_settings" -H 'Content-Type: application/json' -d'{"index": {"blocks": {"read_only_allow_delete": null}}}'
    ```
  </Accordion>

  <Accordion title="Snapshot İşlemleri">
    <AccordionGroup>
      <Accordion title="Snapshota Ait Genel Bilgiler">
        ```bash theme={null}
        curl 'http://<ELASTICSEARCH_IP>:9200/_snapshot?pretty'
        ```
      </Accordion>

      <Accordion title="Repository ve Snapshot Detayları">
        ```bash theme={null}
        curl 'http://<ELASTICSEARCH_IP>:9200/_slm/policy/apinizer-slm-policy-<INDEX_KEY>?pretty'
        ```
      </Accordion>

      <Accordion title="Detaylı Snapshot İnceleme">
        ```bash theme={null}
        curl -X GET "http://<ELASTICSEARCH_IP>:9200/_snapshot/apinizer-repository-<INDEX_KEY>/apinizer-snapshot-<INDEX_KEY>-2023.03.13-m33h8zcpq_if4swyzn0wrq?pretty"

        curl -X GET "http://<ELASTICSEARCH_IP>:9200/_snapshot/apinizer-repository-<INDEX_KEY>/apinizer-snapshot-<INDEX_KEY>-2023.03.13-m33h8zcpq_if4swyzn0wrq/_status?pretty"
        ```
      </Accordion>

      <Accordion title="Snapshot Ayarlarının Silinmesi">
        ```bash theme={null}
        curl -X DELETE 'http://<ELASTICSEARCH_IP>:9200/_snapshot/apinizer-repository-<INDEX_KEY>?pretty'
        ```
      </Accordion>
    </AccordionGroup>
  </Accordion>
</AccordionGroup>
