# Construire un document, multi input

**URL:** https://discuss.elastic.co/t/construire-un-document-multi-input/169173
**Category:** Discussions en français
**Created:** [February 20, 2019, 9:53am UTC](https://discuss.elastic.co/t/construire-un-document-multi-input/169173 "2019-02-20T09:53:05Z")
**Posts on this page:** 4
**Page:** 1

<div class="post-metadata">

### Author: ![Radic4l](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/radic4l/32/37335_2.png) [@Radic4l](https://discuss.elastic.co/u/Radic4l)
#### Post date: [February 20, 2019, 9:53am UTC](https://discuss.elastic.co/t/construire-un-document-multi-input/169173/1 "2019-02-20T09:53:05Z")

</div>

Bonjour la communauté Elastic,  
Je voudrais savoir s’il est possible d’assembler un document à partir de plusieurs Input ?  
Dans ma configuration je fais plusieurs fois appel à la base de données GLPI mais chaque input créer un document. Voici mon fichier de configuration.

```auto
input {
	jdbc {
		jdbc_driver_library => "/usr/share/java/mysql-connector-java-8.0.15.jar"
		jdbc_driver_class => "com.mysql.jdbc.Driver"
		jdbc_connection_string => "jdbc:mysql://mon.serveur.glpi:3306/glpi?useSSL=true&verifyServerCertificate=false&requireSSL=true"
		jdbc_user => "user"
		jdbc_password_filepath => "/my/path/to/.password"
		jdbc_validate_connection => "true"
		tracking_column_type => "timestamp"
		tracking_column => "date_mod"
		tags => ["glpi-tag-names-serials"]
		schedule => "* * * * *"
		statement => "SELECT glpi_computers.name as computer_name_g01,
			glpi_computertypes.name as computertype_name_g01, 
			otherserial AS asset_tag_g01,
			serial as serial_g01,
			glpi_computers.date_mod as date_mod_g01
			FROM glpi_computers 
			LEFT JOIN glpi_computertypes 
			ON glpi_computers.computertypes_id = glpi_computertypes.id 
			WHERE glpi_computers.date_mod > :sql_last_value
			ORDER by glpi_computers.date_mod ASC"
		clean_run => "true"
		last_run_metadata_path => "/usr/share/logstash/.logstash_jdbc_last_run_glpi"
	}
	jdbc {
		jdbc_driver_library => "/usr/share/java/mysql-connector-java-8.0.15.jar"
		jdbc_driver_class => "com.mysql.jdbc.Driver"
		jdbc_connection_string => "jdbc:mysql://mon.serveur.glpi:3306/glpi?useSSL=true&verifyServerCertificate=false&requireSSL=true"
		jdbc_user => "user"
		jdbc_password_filepath => "/my/path/to/.password"
		jdbc_validate_connection => "true"
		schedule => "* * * * *"
		tracking_column_type => "timestamp"
		tracking_column => "date_mod"
		tags => ["glpi-names-ip-mod"]
		statement => "SELECT c.name as computer_name_g02, ip.name as ip_name_g02, np.mac as netwport_mac_g02, c.date_mod as date_mod_g02
				FROM glpi_computers as c,
				glpi_networkports as np,
				glpi_networknames as nn,
				glpi_ipaddresses as ip 
				WHERE np.itemtype = 'Computer' 
				AND np.items_id = c.id 
				AND nn.itemtype='NetworkPort' 
				AND nn.items_id = np.id 
				AND ip.itemtype='NetworkName' 
				AND ip.items_id = nn.id
				AND c.date_mod > :sql_last_value
				ORDER BY c.date_mod ASC"
		clean_run => "true"
		last_run_metadata_path => "/usr/share/logstash/.logstash_jdbc_last_run_glpi"
	}	
	jdbc {
		jdbc_driver_library => "/usr/share/java/mysql-connector-java-8.0.15.jar"
		jdbc_driver_class => "com.mysql.jdbc.Driver"
		jdbc_connection_string => "jdbc:mysql://mon.autre.base/autreoutil?useSSL=true&verifyServerCertificate=false&requireSSL=true"
		jdbc_user => "user"
		jdbc_password_filepath => "/my/path/to/.password"
		jdbc_validate_connection => "true"
		tracking_column_type => "timestamp"
		tracking_column => "date_modification"
		schedule => "* * * * *"
		tags => ["qrg-qrid-serials-projects-loc"]
		statement => "SELECT a.qrid as asset_tag_q01,
		a.numSerie as numserie_q01,
		p.nom as projectname_q01,
		l.nom as secteur_q01,
		a.date_modification as date_mod_q01
			FROM Asset as a, Projet as p, Localisation as l 
			WHERE p.id = a.Projet 
			AND a.localisation = l.id 
			AND a.date_modification > :sql_last_value 
			ORDER BY a.date_modification ASC;"
		clean_run => "true"
		last_run_metadata_path => "/usr/share/logstash/.logstash_jdbc_last_run_eInv"
	}
}

output {
	if "glpi-tag-names-serials" in [tags] or "glpi-names-ip-mod" in [tags] or "qrg-qrid-serials-projects-loc" in [tags] {
		elasticsearch {
		hosts => ["127.0.0.1:9000"]
        	index => "master-index-%{+yyyy.MM.dd}"
    		}
	}
}

```

Alors je me demande si il est possible de passer chacune des valeurs dans des variables et de les comparer puis les insérer dans le même document.  
lorsqu'une valeur match par exemple si computer\_name\_g01 = computer\_name\_g02 alors tu m'assemble toute les cle/valeurs dans le même document de sortie don j'aurais fait la mise en forme.

Je sais que je ne suis pas très clair et j'en suis désolé ^^ Je suis nouveau dans ce domaine !

---

<div class="post-metadata">

### Author: ![gabriel\_tessier](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/gabriel_tessier/32/27911_2.png) [@gabriel\_tessier](https://discuss.elastic.co/u/gabriel_tessier)
#### Post date: [February 25, 2019, 3:23am UTC](https://discuss.elastic.co/t/construire-un-document-multi-input/169173/2 "2019-02-25T03:23:00Z")

</div>

Bonjour,

Si j'ai compris ton cas: t'as différentes sources de données et tu veux au final en avoir qu'1 seul. Dans le but de faire des recherches sur tout tes documents.

Une solution peut être "elastic common schema" tu peux lire le post ici:

> **[Elastic Common Schema (ECS): The Common Event Model for Elasticsearch](https://www.elastic.co/blog/introducing-the-elastic-common-schema)**
>
> Introducing the Elastic Common Schema (ECS), a new specification that provides a consistent and customizable way to structure your data in Elasticsearch, helping machine learning jobs be applied more broadly, searches be crafted more narrowly, and...

  
en gros tu continue a indexer tes documents dans différents index et tu pourras faire des recherche sur toutes tes données.

Deuxième solution c'est d'indexer dans des index temporaire faire un script qui mélange filtre assemble compare etc... et sauvegarde dans un nouvel index pour faire ta recherche.  
Ce qui me semble plus répondre a ce que je comprends de ta phrase: lorsqu'une valeur match par exemple si computer\_name\_g01 = computer\_name\_g02 alors tu m'assemble toute les cle/valeurs dans le même document de sortie don j'aurais fait la mise en forme.

---

<div class="post-metadata">

### Author: ![Radic4l](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/radic4l/32/37335_2.png) [@Radic4l](https://discuss.elastic.co/u/Radic4l)
#### Post date: [March 4, 2019, 10:46am UTC](https://discuss.elastic.co/t/construire-un-document-multi-input/169173/3 "2019-03-04T10:46:44Z")

</div>

Bonjour gabriel,  
Merci pour ton aide je vais aller voir de ce coter et je te dirais ce qu'il en est =)

---

<div class="post-metadata">

### Author: ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)
#### Post date: [April 1, 2019, 10:46am UTC](https://discuss.elastic.co/t/construire-un-document-multi-input/169173/4 "2019-04-01T10:46:50Z")

</div>

This topic was automatically closed 28 days after the last reply. New replies are no longer allowed.
