Ana içeriğe geç

Elasticsearch Sık Kullanılan Komutlar

uyarı

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.

İndeks Görme ve Silme​

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

curl -X GET "<ELASTICSEARCH_IP>:9200/<INDEX_KEY>/_doc/_count"

Where Koşullu İndeks Görme​

curl -X GET "<ELASTICSEARCH_IP>:9200/*/_search?pretty=true&q=apn:XYS"

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"
}}}]}}}'

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​

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​

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​

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​

curl -X DELETE "<ELASTICSEARCH_IP>:9200/<INDEX_KEY>"

Verilen Kelimenin Geçtiği İndeksleri Silme​

curl -X DELETE "<ELASTICSEARCH_IP>:9200/*metric*"

Elasticsearch Yığınının Read_Only Durumunu Değiştirmek​

Tüm indeksler için:

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:

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​

curl -X POST "http://<ELASTICSEARCH_IP>:9200/apinizer-log-apiproxy-<INDEX_KEY>/_rollover"

Belirli Indeksteki Dokümanları Sorgulama​

curl -X GET "<ELASTICSEARCH_IP>:9200/<INDEX_KEY>/_search?pretty=true&q=*:*"

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

curl -X GET "<ELASTICSEARCH_IP>:9200/*/_search?pretty=true&q=apn:Petstore+API"

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

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​

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​

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​

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​

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​

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\");"
}
bilgi
  • 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.
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​

not

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.

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​

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\")"
}
}'
not

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.

not

Elasticsearch veri yapısını incelemek ve silinecek alanları belirlemek için API Trafiği Log Kaydı Veri Yapısı sayfasına bakabilirsiniz.

Replica Sayısı Ayarlama​

Template ile:

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:

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

Shard Allocation​

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

Shard Limiti Arttırma​

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​

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ı​

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​

Shard Tahsisini Etkinleştirme
curl -X PUT "<ELASTICSEARCH_IP>:9200/_cluster/settings" -d '{
"transient": {
"cluster.routing.allocation.enable": "all"
}
}' --header 'Content-Type:application/json'
Başarısız Shard'ları Yeniden Deneme
curl -X POST "<ELASTICSEARCH_IP>:9200/_cluster/reroute?retry_failed" --header 'Content-Type:application/json'
Küme Tahsis Açıklamasını Sorgulama
curl -X GET "<ELASTICSEARCH_IP>:9200/_cluster/allocation/explain?pretty"
İndeks Replikasyon Ayarlarını Güncelleme
curl -X PUT "<ELASTICSEARCH_IP>:9200/_settings" -d '{
"index": {
"number_of_replicas": 0
}
}' --header 'Content-Type:application/json'

Diğer​

_cat APIs
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"
_nodes APIs
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"
_cluster APIs
curl -X GET "<ELASTICSEARCH_IP>:9200/_cluster/stats?pretty"

curl -X GET "<ELASTICSEARCH_IP>:9200/_cluster/state?pretty=true" > result.json
Flush
curl -X POST "<ELASTICSEARCH_IP>:9200/*log*/_flush/synced?pretty"
Log Yazım Engelinin Kaldırılması
curl -X PUT "http://<ELASTICSEARCH_IP>:9200/*log*/_settings" -H 'Content-Type: application/json' -d'{"index": {"blocks": {"read_only_allow_delete": null}}}'
Snapshot İşlemleri
Snapshota Ait Genel Bilgiler
curl 'http://<ELASTICSEARCH_IP>:9200/_snapshot?pretty'
Repository ve Snapshot Detayları
curl 'http://<ELASTICSEARCH_IP>:9200/_slm/policy/apinizer-slm-policy-<INDEX_KEY>?pretty'
Detaylı Snapshot İnceleme
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"
Snapshot Ayarlarının Silinmesi
curl -X DELETE 'http://<ELASTICSEARCH_IP>:9200/_snapshot/apinizer-repository-<INDEX_KEY>?pretty'