# Logstash - Conversion de date

**URL:** <https://discuss.elastic.co/t/logstash-conversion-de-date/109538>\
**Category:** Discussions en français\
**Created:** [November 29, 2017, 8:53am UTC](https://discuss.elastic.co/t/logstash-conversion-de-date/109538 "2017-11-29T08:53:04Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![mat.bst](https://avatars.discourse-cdn.com/v4/letter/m/9e8a1a/32.png) [@mat.bst](https://discuss.elastic.co/u/mat.bst)\
**Post date:** [November 29, 2017, 8:53am UTC](https://discuss.elastic.co/t/logstash-conversion-de-date/109538/1 "2017-11-29T08:53:04Z")

</div>

Bonjour tout le monde !

Grâce à Logstash j'indexe toute une table d'une base de donnée MySQL, cependant je n'arrive pas a filtrer correctement un champs pour qu'il soit transformé en quelque chose de lisible par kibana.

Voici mon fichier de conf logstash :

```
input {
    	jdbc {
    		jdbc_connection_string => "jdbc:mysql://adresse.to.my.mysql.bdd:3306/BDD_NAME"
    		jdbc_user => "xxxxxxxxxxxxxx"
    		jdbc_password => "xxxxxxxxxxxxxxx"
    		jdbc_driver_library => "/path/to/jdbc/drivers/mysql-connector-java-5.1.44/mysql-connector-java-5.1.44-bin.jar"
    		jdbc_driver_class => "com.mysql.jdbc.Driver"
    		statement => "SELECT * FROM ma_table"
    	}
    }

    filter {
    	date {
    		match => ["date_submitted", "UNIX"]

    	}
    }

    output {
    	stdout { codec => json_lines }
    	elasticsearch {
    		"hosts" => "localhost:9200"
    		"index" => "my_index"
    		"document_type" => "data"
    	}
    }

```

Voyez vous quelque chose que j'aurai mal fait ?

---

<div class="post-metadata">

**Author:** ![mat.bst](https://avatars.discourse-cdn.com/v4/letter/m/9e8a1a/32.png) [@mat.bst](https://discuss.elastic.co/u/mat.bst)\
**Post date:** [November 29, 2017, 9:19am UTC](https://discuss.elastic.co/t/logstash-conversion-de-date/109538/2 "2017-11-29T09:19:41Z")

</div>

Je viens de trouver la solution j'ai oublié la ligne target

```
input {
jdbc {
jdbc_connection_string => "jdbc:mysql://adresse.to.my.mysql.bdd:3306/BDD_NAME"
jdbc_user => "xxxxxxxxxxxxxx"
jdbc_password => "xxxxxxxxxxxxxxx"
jdbc_driver_library => "/path/to/jdbc/drivers/mysql-connector-java-5.1.44/mysql-connector-java-5.1.44-bin.jar"
jdbc_driver_class => "com.mysql.jdbc.Driver"
statement => "SELECT * FROM ma_table"
}
}

filter {
date {
match => ["date_submitted", "UNIX"]
target => "date_submitted"

}
}

output {
stdout { codec => json_lines }
elasticsearch {
"hosts" => "localhost:9200"
"index" => "my_index"
"document_type" => "data"
}
}

```

Ce fichier de conf fonctionne parfaitement

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [November 29, 2017, 9:51am UTC](https://discuss.elastic.co/t/logstash-conversion-de-date/109538/3 "2017-11-29T09:51:28Z")

</div>

Super!. Merci d'avoir partagé ta solution !

Si tu pouvais formater ton code avec

````
```
CODE
```

````

Ca serait parfait! (tu peux rééditer tes posts si tu veux)

---

<div class="post-metadata">

**Author:** ![mat.bst](https://avatars.discourse-cdn.com/v4/letter/m/9e8a1a/32.png) [@mat.bst](https://discuss.elastic.co/u/mat.bst)\
**Post date:** [November 29, 2017, 10:22am UTC](https://discuss.elastic.co/t/logstash-conversion-de-date/109538/4 "2017-11-29T10:22:22Z")

</div>

Ca y est c'est fait !

Petite question supplémentaire :  
Dans les documents que j'indexe, j'ai plusieurs champs number  
Severity  
Status  
Priorite

Ces champs ne peuvent avoir que certaines valeurs (10, 20, 30, 40, 50, 60, 70, 80,90)  
Chacune de ces valeurs corresponds à un niveau de sévérité, un status ou une priorité comme vous vous en doutez.

J'essaye donc dans mon fichier de conf Logstash de faire remplacer ces valeurs number par leur correspondance en String j'ai essayé ca mais sans succès

```
filter {
	if [status] == "10" {
	mutate {
		replace => ["status", "New"]
	}
	}
}

```

Une petite piste ?

---

<div class="post-metadata">

**Author:** ![mat.bst](https://avatars.discourse-cdn.com/v4/letter/m/9e8a1a/32.png) [@mat.bst](https://discuss.elastic.co/u/mat.bst)\
**Post date:** [November 29, 2017, 10:49am UTC](https://discuss.elastic.co/t/logstash-conversion-de-date/109538/5 "2017-11-29T10:49:04Z")

</div>

Solution trouvé également, il fallait remplacer  
`if [status] == "10"`  
par  
`if [status] == 10`

Vu que status est de type number

Du coup j'ai fini tout mes filtres pour changer mes données mais le temps import est relativement long maintenant, puis-je optimiser mon fichier de conf ?  
cf ci-dessous

```
input {
	//input
	}
}

filter {
	if [status] == 10 {
	mutate {
		replace => ["status", "New"]
	}
	}else if [status] == 20 {
	mutate {
		replace => ["status", "Feedback"]
	}
	}else if [status] == 30 {
	mutate {
		replace => ["status", "Acknowledged"]
	}
	}else if [status] == 40 {
	mutate {
		replace => ["status", "Confirmed"]
	}
	}else if [status] == 50 {
	mutate {
		replace => ["status", "Assigned"]
	}
	}else if [status] == 80 {
	mutate {
		replace => ["status", "Resolved"]
	}
	}else if [status] == 90 {
	mutate {
		replace => ["status", "Closed"]
	}
	}
}

filter {
	if [priority] == 10 {
	mutate {
		replace => ["priority", "none"]
	}
	}else if [priority] == 20 {
	mutate {
		replace => ["priority", "low"]
	}
	}else if [priority] == 30 {
	mutate {
		replace => ["priority", "normal"]
	}
	}else if [priority] == 40 {
	mutate {
		replace => ["priority", "high"]
	}
	}else if [priority] == 50 {
	mutate {
		replace => ["priority", "urgent"]
	}
	}else if [priority] == 80 {
	mutate {
		replace => ["priority", "immediate"]
	}
	}
}

filter {
	if [severity] == 20 {
	mutate {
		replace => ["severity", "trivial"]
	}
	}else if [severity] == 50 {
	mutate {
		replace => ["severity", "minor"]
	}
	}else if [severity] == 60 {
	mutate {
		replace => ["severity", "major"]
	}
	}else if [severity] == 80 {
	mutate {
		replace => ["severity", "block"]
	}
	}
}

filter {
	date {
		match => ["date_submitted", "UNIX"]
		target => "date_submitted"

	}
}

filter {
	date {
		match => ["last_updated", "UNIX"]
		target => "last_updated"

	}
}

output {
	//output
	}
}
```

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [December 1, 2017, 6:46pm UTC](https://discuss.elastic.co/t/logstash-conversion-de-date/109538/6 "2017-12-01T18:46:13Z")

</div>

Regarde si le translate filter ne serait pas plus efficace... [https://www.elastic.co/guide/en/logstash/6.0/plugins-filters-translate.html](https://www.elastic.co/guide/en/logstash/6.0/plugins-filters-translate.html)

---

<div class="post-metadata">

**Author:** ![mat.bst](https://avatars.discourse-cdn.com/v4/letter/m/9e8a1a/32.png) [@mat.bst](https://discuss.elastic.co/u/mat.bst)\
**Post date:** [December 8, 2017, 9:28am UTC](https://discuss.elastic.co/t/logstash-conversion-de-date/109538/7 "2017-12-08T09:28:45Z")

</div>

Merci Dadoo !

Je me posais une petite question concernant le fonctionnement de logstash une fois lancé comme un service.

La pippeline que j'ai défini va donc indexer toutes les entrées d'une table provenant d'une base de donnée MySQL.  
Les nouvelles entrées faite dans la base de données vont-elle être indexer automatiquement dans elasticsearch ?

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [December 8, 2017, 12:03pm UTC](https://discuss.elastic.co/t/logstash-conversion-de-date/109538/8 "2017-12-08T12:03:44Z")

</div>

Comme là tu n'as pas mis de [schedule](https://www.elastic.co/guide/en/logstash/current/plugins-inputs-jdbc.html#plugins-inputs-jdbc-schedule), c'est une opération one shot.

---

<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:** [January 5, 2018, 12:04pm UTC](https://discuss.elastic.co/t/logstash-conversion-de-date/109538/9 "2018-01-05T12:04:30Z")

</div>

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