====== Elasticsearch Cheat Sheet ======
===== update_by_query =====
POST /index/_update_by_query
{
"script": "ctx._source.field = 'correct value'",
"query": {
"term": {
"field": "wrong value"
}
}
}
===== backup =====
==== Add backup directory to repository ====
$ grep backup /srv/elk/elasticsearch/config/elasticsearch.yml
path.repo: [ "/backup" ]
==== Register snapshot repository ====
PUT /_snapshot/backup
{
"type": "fs",
"settings": {
"location": "/backup",
"compress": "true"
}
}
==== Create snapshot ====
PUT /_snapshot/backup/snapshot_$date?wait_for_completion=true
===== Prune Indices with curator =====
$ cat action.yml
actions:
1:
action: delete_indices
description: >-
Delete indices older than 5 days (based on index name), for logstash-
prefixed indices. Ignore the error if the filter does not result in an
actionable list of indices (ignore_empty_list) and If you want to change the retention Days then goto unit_count:.
options:
ignore_empty_list: True
timeout_override:
continue_if_exception: False
disable_action: False
filters:
- filtertype: pattern
kind: prefix
value: logstash-
exclude:
- filtertype: age
source: name
direction: older
timestring: '%Y.%m.%d'
unit: days
unit_count: 90
exclude:
$ cat config.yml
client:
hosts:
- elk-elasticsearch
port: 9200
url_prefix:
use_ssl: False
certificate:
client_cert:
client_key:
ssl_no_validate: False
http_auth:
timeout: 30
master_only: False
logging:
loglevel: INFO
logfile:
logformat: default
blacklist: ['elasticsearch', 'urllib3']
$ curator --config ./config.yml action.yml
===== Merge smaller indexes to one large index =====
$ curl --netrc --insecure --request POST --header "Content-Type: application/json" https://elk-elasticsearch:9200/_reindex -d'
{
"source": {
"index": "filebeat-7.13.2-2021.07.*"
},
"dest": {
"index": "filebeat-7.13.2-2021.07-000001"
}
}'
$ curl --netrc --insecure --request PUT --header "Content-Type: application/json" https://elk-elasticsearch:9200/filebeat-7.13.2-2021.07-000001/_alias/filebeat-7.13.2
{{tag>kb elasticsearch}}