О
Данный инструмент экспортирует данные из ES и позволяет частично настраивать формат данных и файлы данных. Инструмент в основном использует интерфейс Scroll для многопоточного экспорта данных из ElasticSearch.
Дизайн
Проект реализован с использованием двух пулов потоков: один пул потоков отвечает за получение данных из ElasticSearch, используя интерфейс Scroll для организации многопоточности и разделения данных на части (slice). Другой пул потоков предназначен для записи файлов, используя BlockingQueue для буферизации данных в очереди потоков и однопоточную запись файла.
Версия
V1.3.5
V1.2.4
V1.2.3
V1.2.2
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. Среда выполнения
2. Инициализация проекта
Объяснение терминов в файле конфигурации
В файле конфигурации используются следующие термины:
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 )