Я хочу сделать резервную копию некоторых записей (например, только последние 1 миллион записей) индекса Elasticsearch и восстановить эту резервную копию на другом компьютере. Было бы лучше, если бы это можно было сделать, используя доступные / встроенные функции Elasticsearch.
Я пробовал снимок и восстановление Elasticsearch (следуя коду), но похоже, что он создает резервную копию всего индекса, а не выборочных записей.
curl -H 'Content-Type: application/json' -X PUT "localhost:9200/_snapshot/es_data_dump?pretty=true" -d '
{
"type": "fs",
"settings": {
"compress" : true,
"location": "es_data_dump"
}
}'
curl -H 'Content-Type: application/json' -X PUT "localhost:9200/_snapshot/es_data_dump/snapshot1?wait_for_completion=true&pretty=true" -d '
{
"indices" : "index_name",
"type": "fs",
"settings": {
"compress" : true,
"location": "es_data_dump"
}
}'
Формат резервного копирования может быть любым, если он может быть успешно восстановлен на другом компьютере.
2 ответа
В конце концов, я получил необходимые данные, используя драйвер python, потому что это то, что я нашел проще всего для данного варианта использования.
Для этого я запустил запрос Elasticsearch и сохранил его ответ в файле в формате новой строки, а затем восстановил данные из него, используя другой скрипт на python. Таким образом, возвращается максимум 10000 записей вместе с идентификатором прокрутки, который будет использоваться для получения следующих 10000 записей и так далее.
es = Elasticsearch(timeout=30, max_retries=10, retry_on_timeout=True)
page = es.search(index=['ct_analytics'], body={'size': 10000, 'query': _query, 'stored_fields': '*'}, scroll='5m')
while len(page['hits']['hits']) > 0:
es_data = page['hits']['hits'] #Store this as you like
scrollId = page['_scroll_id']
page = es.scroll(scroll_id=scrollId, scroll='5m')
Вы можете использовать _reinex API. это может занять любой запрос. после переиндексации у вас есть новый индекс в качестве резервной копии, который содержит запрошенные записи. легко скопируйте его куда хотите.
Полная информация находится здесь: https: //www.elastic .co / гид / а / elasticsearch / ссылка / текущие / документы - reindex.html
Новые вопросы
elasticsearch
Elasticsearch - это поисковая система с открытым исходным кодом (Apache 2), распределенная, RESTful, основанная на Lucene.