2013-10-08 2 views

ответ

32

Elasticsearch поддерживает это сейчас из коробки:

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/modules-snapshots.html

+1

Это удобно, приветствие thx! –

+17

В то время как очень удобно, моментальный снимок действительно не экспортирует ваши данные в пригодном для использования формате (json, csv и т. Д.). – Evan

+0

@ Функция рендеринга Anndreas Neumann Может делать резервную копию подмножества документов в индексе. Предположим, что индекс имеет 1000 документов, и я хочу сделать резервную копию всего 500 документов. Я хотел бы сделать это, потому что я хочу импортировать набор документов и восстановить в каком-то другом индексе, чтобы выполнить некоторое нагрузочное тестирование. Я не требую, чтобы все документы для моей задачи и индекс были огромны, и я не хочу делать снимок всех данных, так как потребуется много времени –

2

Данные сами по себе являются одним или несколькими индексами lucene, так как вы можете иметь несколько осколков. То, что вам также нужно сделать для резервного копирования, - это состояние кластера, содержащее все виды информации о кластере, доступные индексы, их сопоставления, осколки, из которых они состоят и т. Д.

Все это находится в каталоге data, хотя вы можете просто скопируйте его. Его структура довольно интуитивно понятна. Прямо перед копированием лучше отключить автоматический сброс (для резервного копирования последовательного представления индекса и предотвращения записи на нем при копировании файлов), выпустить ручную флеш, отключить выделение. Не забудьте скопировать каталог со всех узлов.

Кроме того, следующая основная версия elasticsearch будет предоставлять новый снимок/восстановление api, который позволит вам выполнять инкрементные снимки и восстанавливать их также через api. Вот связанный вопрос github: https://github.com/elasticsearch/elasticsearch/issues/3826.

+1

На самом деле я пробовал это решение, и это не сработало для меня. Я копирую папку данных, как вы сказали, в новую удаленную установку, я пытался запустить ES, но он умер из-за исключений. К сожалению, у меня нет журнала, чтобы вставить его. Удалось ли ваше решение? –

+0

Да, вот как вы должны это делать. Вы пытались восстановить индекс в той же версии elasticsearch? Аналогичная машина? Был ли это большой индекс? Один узел? – javanna

+0

Это был единственный узел, 5 осколков, небольшой индекс (~ 2k документов), но другая машина. Версия была такой же (0.9) –

25

Вот новый инструмент, над которым мы работали именно для этой цели https://github.com/taskrabbit/elasticsearch-dump. Вы можете экспортировать индексы в/из файлов JSON или из одного кластера в другой.

+0

Спасибо Эван, это прекрасно. Мне нравится, как это позволяет нам иметь дело с файлами простого json. – NullPointer

+0

Я пробовал это. Хотя данные индекса были 112Mb. Экспортированные данные были 3 раза около 337 МБ в формате json, и это заняло 40 минут. Я не знаю, что индекс слишком велик, действительно ли он действительно смотрит на время, которое требуется. Каков его ориентир на функцию моментального снимка, предоставленную ES из коробки. –

+0

@Evan does elasticdump использует функцию сканирования и прокрутки ElasticSearch внутренне? –

8

сам ElasticSearch обеспечивает способ создания резервной копии и восстановления данных. Простая команда, чтобы сделать это:

CURL -XPUT 'localhost:9200/_snapshot/<backup_folder name>/<backupname>' -d '{ 
    "indices": "<index_name>", 
    "ignore_unavailable": true, 
    "include_global_state": false 
}' 

Теперь, как создать, эта папка, как включить этот путь к папке в конфигурации ElasticSearch, так что он будет доступен для ElasticSearch, метод восстановления, хорошо объясняется here , Чтобы увидеть его практическую демонстрацию серфинга here.

Смежные вопросы