Удалите старые документы из Elastic Search, используя logstash - PullRequest
0 голосов
/ 24 октября 2018

Я использую logstash для индексации данных из postgres (входной плагин jdbc) вasticsearch.У меня нет никакой временной информации в базе данных.Пользователи таблицы Postgres для импорта имеют 2 столбца - userid (уникальный), uname Экспорт эластичного поиска - _id = userid Я экспортирую эти данные каждый час, используя расписание cron в logstash.

input {
     jdbc {
         schedule => "0 */1 * * *"
         statement => "SELECT userid, uname FROM users"
     }
}
output {
     elasticsearch {
        hosts => ["elastic_search_host"]
        index => "user_data"
        document_id => "%{userid}"
    }
}

Этот конфигурационный файл logstash правильно индексирует данные,Но это работает только для случаев обновления и вставки.Если какие-либо данные / данные пользователя будут удалены из таблицы, документ не будет удален из индекса эластичного поиска.Может кто-нибудь помочь мне с делом об удалении?

1 Ответ

0 голосов
/ 24 октября 2018

В logstash нет опции «из коробки» для достижения желаемого результата.

https://discuss.elastic.co/t/delete-elasticsearch-document-with-logstash-jdbc-input/47490 - как уже упоминалось, вы можете добавить столбец «статус» и пометить запись как удаленную, вместо удаления записи.

Другой способ сделать этобудет удалять ваш индекс каждый час, а затем позволить logstash сделать свое дело.Будет очень короткая продолжительность, когда не будет данных в Elasticsearch.

Чтобы избежать этого, вместо этого вы можете настроить logstash для индексации нового индекса каждый час, например, для.user_data-timestamp, а затем удалить старые индексы извне, используя куратор и т. д.

...