2 votes

Logstash planifie l'insertion d'enregistrements en double dans Elasticsearch

J'ai créé un fichier de configuration logstash avec le plugin d'entrée JDBC pour importer des tables de base de données Oracle dans Elasticsearch et je l'ai planifié pour toutes les cinq minutes.

Cela fonctionne comme prévu mais le problème est que des enregistrements dupliqués sont insérés lorsqu'il est exécuté pour la 2ème, 3ème fois. Comment pouvons-nous éviter d'insérer des enregistrements dupliqués dans Elasticsearch.?

Veuillez trouver mon fichier de configuration logstash avec le plugin d'entrée JDBC:

input {
      jdbc {
        jdbc_driver_library => "D:\1SearchEngine\data\ojdbc8.jar"
        jdbc_driver_class => "Java::oracle.jdbc.OracleDriver"
        jdbc_connection_string => "jdbc:oracle:thin:@localhost:1521:XE"
        jdbc_user => "demo"
        jdbc_password => "1234567"
        schedule => "*/5 * * * *"
        statement => "select * from documents"
      }
    }

    output {
      elasticsearch {
        hosts => ["localhost:9200"]
        index => "schedule1_documents"
      }
    }

Veuillez trouver le schéma de ma table de documents:

id  ---> Not Null number
FileName ---> varchar2
Path     ----> varchar2
File_size ---> varchar2

1voto

Val Points 94829

Vous devez utiliser le champ id de votre table de documents. Sinon, ES créera lui-même un identifiant.

Donc, votre sortie devrait ressembler à ceci :

  elasticsearch {
    hosts => ["localhost:9200"]
    index => "schedule1_documents"
    document_id => "%{id}"              <-- ajoutez cette ligne avec le champ ID approprié
  }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X