1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/hongjie95-es_data_export

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
Внести вклад в разработку кода
Синхронизировать код
Отмена
Подсказка: Поскольку Git не поддерживает пустые директории, создание директории приведёт к созданию пустого файла .keep.
Loading...
README.md

О

Данный инструмент экспортирует данные из ES и позволяет частично настраивать формат данных и файлы данных. Инструмент в основном использует интерфейс Scroll для многопоточного экспорта данных из ElasticSearch.

Дизайн

Проект реализован с использованием двух пулов потоков: один пул потоков отвечает за получение данных из ElasticSearch, используя интерфейс Scroll для организации многопоточности и разделения данных на части (slice). Другой пул потоков предназначен для записи файлов, используя BlockingQueue для буферизации данных в очереди потоков и однопоточную запись файла.

Версия

V1.3.5

  1. Добавлена функция экспорта данных ES в БД, поддерживающая большинство основных баз данных.
  2. Добавлена поддержка настраиваемых SQL-запросов для экспорта.
  3. Изменены имена конфигурационных файлов для удобства чтения.
  4. Изменена стратегия разделения файлов, вместо разделения по количеству файлов используется разделение по размеру файлов.
  5. Оптимизирован код.

V1.2.4

  1. Введён мониторинг пула потоков, обеспечивающий корректное завершение программы после завершения экспорта данных.
  2. Перед запуском добавлена проверка конфигурации на правильность и установка значений по умолчанию.
  3. Улучшено ведение журнала исключений для более эффективного поиска проблем.

V1.2.3

  1. Оптимизирована операция записи файла с использованием очереди BlockingQueue.
  2. Добавлена поддержка записи файлов определённого размера с последующим разделением.
  3. Добавлена поддержка SSL-шифрования при получении данных.

V1.2.2

  1. Переработан код, отказавшись от собственной реализации HTTP-инструментов в пользу официального RestClient.
  2. Реализована поддержка многопоточной выборки данных из ES.

V1.0.1

Реализован однопоточный экспорт данных.

Поддерживаемые версии

Elasticsearch version support
>= 6.0.0 yes
>= 5.0.0 not test
>= 2.0.0 not test
<= 1 not test

Запуск

Можно напрямую взять скомпилированный пакет из папки build или выполнить следующие команды:

$ git clone https://gitee.com/hongjie95/es_data_export.git
$ cd es_data_export

Если установлены ant и maven, можно использовать следующие команды:

$ ant
$ cd build
$ vim export.properties
$ ./run.sh

При наличии только maven выполните следующие действия:

$ mvn clean package
$ cp export.properties run.sh stop.sh logback.xml target/
$ cd target
$ vim export.properties
$./run.sh

Не забудьте изменить файл export.properties.

Разработка

1. Среда выполнения

  • IDE: IntelliJ IDEA или Eclipse.
  • Инструмент сборки проекта: Maven.

2. Инициализация проекта

  • Откройте IntelliJ IDEA и импортируйте проект.
  • Измените файл export.properties для настройки.
  • Запустите App.java для выполнения.

Объяснение терминов в файле конфигурации

В файле конфигурации используются следующие термины:

common.thread_size — количество потоков для получения данных, не превышающее максимальное количество сегментов индекса и количество ядер процессора, по умолчанию равно 1. elasticsearch.index — индекс данных. elasticsearch.document_type — тип индекса, если не используется, оставьте пустым; после версии ES 7.0 этот параметр был удалён. elasticsearch.query — условие запроса DSL, обязательное для использования в качестве запроса ES; если требуется получить все данные, установите значение «запрос всех данных» и размер пакета 1000. elasticsearch.includes — поля, которые необходимо включить в данные; если требуются все поля, установите значение пустым. elasticsearch.hosts — IP-адреса кластера ES, разделенные запятыми, например: 192.169.2.98:9200, 192.169.2.156:9200, 192.169.2.188:9200. elasticsearch.username — имя пользователя, если есть учётные данные, заполните; если нет, оставьте пустым. elasticsearch.password — пароль, если есть учётные данные, заполните; если нет, оставьте пустым. file.enabled — флаг включения записи в файл, по умолчанию false. file.datalayout — формат выходных исходных данных, в настоящее время поддерживаются json, txt, sql; если это txt, поля разделяются запятой, по умолчанию json. file.field_split — разделитель полей при datalayout=txt, без настройки по умолчанию используется запятая. file.field_sort — порядок вывода полей при datalayout=txt; должен соответствовать порядку полей в индексе; помогает предотвратить путаницу в данных; разделители — запятые. file.need_field_name — требуется ли включать имена полей при выводе данных в формате txt; по умолчанию false, при установке значения true данные выводятся в виде fieldName1=fieldValue1,fieldName2=fieldValue2. file.sql_format — формат SQL при выводе в txt; например, INSERT INTO test (phone,msgcode) VALUES (#param{phone},123); где #param{поле} используется для замены параметров ES. file.linefeed — необходимость переноса строки при записи данных в файл; по умолчанию true. file.filepath — путь к файлу данных. file.filename — имя файла данных, если пусто, используется значение по умолчанию index. file.max_filesize — размер файла для разделения, если необходимо, укажите этот параметр; фактическое значение может немного отличаться; если разделение файлов не требуется, оставьте поле пустым; единица измерения — КБ. file.custom_field_name — пользовательские имена полей; после извлечения из библиотеки эти поля заменяются указанными именами; несколько имён разделяются запятыми; например, phone:telphone. db.enabled — включение записи в базу данных. db.jdbc_driver_library — адрес jar-файла драйвера, например lib/mysql-connector-java-5.1.47.jar; можно указать собственный драйвер для конкретной версии базы данных. db.jdbc_connection_string — строка подключения к базе данных, например jdbc:sqlserver://192.169.2.203:1433;DatabaseName=db_phone_sa_center. db.jdbc_driver_class — класс драйвера базы данных, например com.mysql.jdbc.Driver. db.jdbc_user — имя пользователя базы данных. db.jdbc_password — пароль базы данных. db.jdbc_template — шаблон вставки данных, где #param{ES поле} заменяется значением из ES, например INSERT INTO test111 (name) VALUES (#param{simuid}). db.jdbc_size — максимальный размер партии при вставке данных, по умолчанию 10 000. db.jdbc_write_thread_size — одновременное количество потоков записи в базу данных, по умолчанию 1.

Комментарии ( 0 )

Вы можете оставить комментарий после Вход в систему

Введение

Инструмент для экспорта данных ES, инструмент для экспорта данных ES, инструмент экспорта данных Elasticsearch, экспорт данных Elasticsearch. В настоящее время поддерживается все версии 6.x, в дальнейшем планируется поддержка более ранних версий. Развернуть Свернуть
Apache-2.0
Отмена

Обновления

Пока нет обновлений

Участники

все

Недавние действия

Загрузить больше
Больше нет результатов для загрузки
1
https://api.gitlife.ru/oschina-mirror/hongjie95-es_data_export.git
git@api.gitlife.ru:oschina-mirror/hongjie95-es_data_export.git
oschina-mirror
hongjie95-es_data_export
hongjie95-es_data_export
master