Лучший вариант при попытке передать данные из базы данных SQL — использовать JDBC Input от Logstash. сделать это за вас (документация< /а>). Это может, мы надеемся, просто сделать все это для вас.
Не все схемы SQL упрощают это, поэтому для ваших конкретных вопросов:
Как использовать пакет для обновления документа, если он существует, и создать документ, если его нет в пакете, не зная, существует ли он в индексе.
В настоящее время Bulk принимает четыре различных типа запросы, которые ведут себя не так, как вы, вероятно, ожидаете от мира SQL:
index
create
update
delete
Первый, index
, является наиболее часто используемым вариантом. Это означает, что вы хотите index
(глагол) что-то добавить в индекс Elasticsearch (существительное). Однако, если он уже существует в индексе с таким же _id
, он заменит его. Остальные, наверное, более очевидны.
Каждый из подзапросов ведет себя как отдельная опция, с которой они связаны (таким образом, update
— это UpdateRequest
под капотом, delete
— это DeleteRequest
, а index
— это IndexRequest
). В случае create
это специализация index
, которая фактически говорит: «добавьте это, если оно не существует, но не используйте его, если оно существует».
Как отформатировать большое количество JSON, чтобы выполнить массовое обновление/создание документа, потому что массовый API ожидает, что тело будет отформатировано определенным образом.
Вам следует рассмотреть возможность использования подхода Logstash или любой из существующих клиентских языковых библиотек, таких как Клиент Python, который должен хорошо работать из cron. Клиенты позаботятся о форматировании за вас. Один для вашего предпочитаемого языка, скорее всего, уже существует.
person
pickypg
schedule
06.06.2016