Differences
This shows you the differences between two versions of the page.
Both sides previous revision Previous revision | |||
linux_faq:elasticsearch_faq [2020/08/20 10:59] – [Kibana Error] admin | linux_faq:elasticsearch_faq [2022/06/20 13:44] (current) – [Миграция индексов из кластера в другой] admin | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== Backup to S3 ====== | ||
+ | Для бекапа на **AWS**-подобный **S3** надо: | ||
+ | * создать **s3**-клиента (можно использовать дефолтный - **default**) и в **Elasticsearch Keystore** прописать ключи (**access_key** и **secret_key**) | ||
+ | * cоздать в Elasticsearch **snapshot repository**, | ||
+ | Для того чтобы прописать ключи - можно использовать файлик **elasticsearch.yml** или если ES развернут оператором **eck**, то с помощью спецификации указать на секрет, | ||
+ | < | ||
+ | apiVersion: elasticsearch.k8s.elastic.co/ | ||
+ | kind: Elasticsearch | ||
+ | spec: | ||
+ | secureSettings: | ||
+ | - secretName: s3-backup-keys | ||
+ | </ | ||
+ | А в секрете собственно прописать ключи: | ||
+ | < | ||
+ | apiVersion: v1 | ||
+ | kind: Secret | ||
+ | metadata: | ||
+ | name: s3-backup-keys | ||
+ | type: Opaque | ||
+ | data: | ||
+ | s3.client.default.access_key: | ||
+ | s3.client.default.secret_key: | ||
+ | </ | ||
+ | То есть ключи секрета - представляют собой параметры, | ||
+ | Скрипт для создания снапшотов по расписанию может выглядеть так: | ||
+ | < | ||
+ | from elasticsearch import Elasticsearch | ||
+ | from datetime import datetime | ||
+ | import argparse | ||
+ | |||
+ | def main(args): | ||
+ | es = Elasticsearch(hosts=args.es_url, | ||
+ | http_auth=(args.es_login, | ||
+ | url_prefix=args.es_url_prefix) | ||
+ | |||
+ | print(es.snapshot.get_repository()) | ||
+ | |||
+ | # https:// | ||
+ | # https:// | ||
+ | # https:// | ||
+ | # https:// | ||
+ | |||
+ | repo_definition={ | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | } | ||
+ | |||
+ | es.snapshot.create_repository(repository=" | ||
+ | es.snapshot.create(repository=" | ||
+ | snapshots=es.snapshot.get(snapshot=' | ||
+ | |||
+ | for snapshot in snapshots[" | ||
+ | print(snapshot[" | ||
+ | |||
+ | if __name__ == ' | ||
+ | parser = argparse.ArgumentParser() | ||
+ | parser.add_argument(' | ||
+ | parser.add_argument(' | ||
+ | parser.add_argument(' | ||
+ | parser.add_argument(' | ||
+ | parser.add_argument(' | ||
+ | parser.add_argument(' | ||
+ | parser.add_argument(' | ||
+ | parser.add_argument(' | ||
+ | |||
+ | args = parser.parse_args() | ||
+ | |||
+ | main(args) | ||
+ | </ | ||
+ | |||
+ | ====== Миграция индексов из кластера в другой ====== | ||
+ | Предварительно, | ||
+ | < | ||
+ | apiVersion: elasticsearch.k8s.elastic.co/ | ||
+ | kind: Elasticsearch | ||
+ | spec: | ||
+ | nodeSets: | ||
+ | - config: | ||
+ | reindex.remote.whitelist: | ||
+ | reindex.ssl.verification_mode: | ||
+ | </ | ||
+ | И дальше - просто воспользоваться модулем **elasticsearch** для **python** и скриптом: | ||
+ | < | ||
+ | import argparse | ||
+ | |||
+ | |||
+ | def main(args): | ||
+ | es_source = Elasticsearch(hosts=args.source_es_url, | ||
+ | http_auth=(args.source_es_login, | ||
+ | es_dest = Elasticsearch(hosts=args.dest_es_url, | ||
+ | http_auth=(args.dest_es_login, | ||
+ | |||
+ | for index in es_source.indices.get(' | ||
+ | print(index) | ||
+ | es_dest.reindex({ | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | }, | ||
+ | " | ||
+ | " | ||
+ | } | ||
+ | }) | ||
+ | |||
+ | print('#################################################################' | ||
+ | print(es_dest.indices.get(' | ||
+ | |||
+ | # for index in es_dest.indices.get(' | ||
+ | # | ||
+ | |||
+ | if __name__ == ' | ||
+ | parser = argparse.ArgumentParser() | ||
+ | parser.add_argument(' | ||
+ | parser.add_argument(' | ||
+ | parser.add_argument(' | ||
+ | parser.add_argument(' | ||
+ | parser.add_argument(' | ||
+ | parser.add_argument(' | ||
+ | |||
+ | args = parser.parse_args() | ||
+ | |||
+ | main(args) | ||
+ | </ | ||
====== List indexes ====== | ====== List indexes ====== | ||
curl http:// | curl http:// |