Elastic сохраняет только последнюю запись из logstash - PullRequest
0 голосов
/ 29 июня 2018

Вот оператор выбора, который представляет собой данные транзакции, каждый раз, когда данные вставляются в UserProfile, старые значения индекса удаляются из эластичного

  jdbc {
    statement => "SELECT userId,salesTeam FROM UserProfile with (nolock)"
}
output {
    elasticsearch {
    hosts => ["localhost:9200"]
    index => "q_d"
    document_type => "cd"
    document_id => "%{userId}%"
  }
  stdout { codec => rubydebug }
}

Я хочу обновить существующие документы, если есть какие-либо изменения, иначе индексировать новый документ.
что я тут не так делаю?

1 Ответ

0 голосов
/ 01 июля 2018
input {
    jdbc {
        # Postgres jdbc connection string to our database, mydb
        jdbc_connection_string => "jdbc:postgresql://localhost:5432/bhavya"
        # The user we wish to execute our statement as
        jdbc_user => "postgres"
        # The path to our downloaded jdbc driver
        jdbc_driver_library => "/root/postgresql-42.2.2.jar"
        # The name of the driver class for Postgresql
        jdbc_driver_class => "org.postgresql.Driver"
        jdbc_password => "postgres"
        jdbc_validate_connection => true
        #You can schedule input from this plugin,the following uses cron syntax
        schedule => "* * * * *"
        # our query
        statement => "SELECT uid,email,first_name,last_name FROM contacts"
    }
}

output {
    elasticsearch {
    hosts => ["localhost:9200"]
    index => "contacts"
    document_type => "record"
    document_id => "%{uid}"
  }
  stdout { codec => rubydebug }
}

Сначала вы должны добавить вышеупомянутые опции, которые я указал в плагине ввода в соответствии с вашей базой данных. Я использовал Postgresql в качестве базы данных. Соответственно, вам необходимо загрузить соответствующий jar библиотеки драйверов для этой базы данных и указать соответствующий путь.

Во-вторых, вы должны использовать опцию расписания в плагине "jdbc", чтобы он периодически считывал данные из базы данных.

В-третьих, вы должны удалить лишний «%» из части «document_id» в части плагина «output».

Вы должны обратиться на эту страницу для импорта данных в logstash из базы данных : ->

https://www.elastic.co/blog/logstash-jdbc-input-plugin

...