Bonjour ,
Je pensais pouvoir résoudre ce problème en 2 minutes , mais finalement je suis bloqué dessus depuis un bon moment en testant tout un tas de solutions trouvés sur le net .
Mon problème est simple .
Je dispose d'un document json sur mon disque dur qui ressemble à ça pour le moment :
[
{
"reference": "2-4",
"title": "jeanclaude",
"createdAt": "2019-01-22 09:37:49",
"publishedAt": "2019-01-22 09:37:49",
"updatedAt": null,
"trashed": false,
"trashedStatus": null,
"authorId": "VXNlcjoxMTQwMTc0YS0xZTFmLTExZTktOTRkMi1mYTE2M2VlYjExZTE=",
"authorType": "Citoyen / Citoyenne"
},
{
"reference": "2-5",
"title": "hello boi",
"createdAt": "2019-01-22 09:39:33",
"publishedAt": "2019-01-22 09:39:33",
"updatedAt": null,
"trashed": false,
"trashedStatus": null,
"authorId": "VXNlcjpjOWYxZWQ1NS0xYzEwLTExZTktOTRkMi1mYTE2M2VlYjExZTE=",
"authorType": "Citoyen / Citoyenne",
"authorZipCode": "57000"
},
{
"reference": "2-6",
"title": "non pas trop",
"createdAt": "2019-01-22 09:39:50",
"publishedAt": "2019-01-22 09:39:50",
"updatedAt": null,
"trashed": false,
"trashedStatus": null,
"authorId": "VXNlcjozZjlhNzAwOS0xYTc2LTExZTktOTRkMi1mYTE2M2VlYjExZTE=",
"authorType": "Citoyen / Citoyenne",
"authorZipCode": "34140"
},
{
"reference": "2-7",
"title": "race carré",
"createdAt": "2019-01-22 09:40:19",
"publishedAt": "2019-01-22 09:40:19",
"updatedAt": null,
"trashed": false,
"trashedStatus": null,
"authorId": "VXNlcjozOWQwNzJjNC0xZDEwLTExZTktOTRkMi1mYTE2M2VlYjExZTE=",
"authorType": "Citoyen / Citoyenne",
"authorZipCode": "17400"
}
]
Je souhaite simplement indexer ces 4 objets JSON dans elasticsearch pour le moment.
A vue de nez ça parait simple. Il y a plein de sujets la dessus sur le forum . Mais aucune solution testé n'a été vraiment satisfaisante
Au départ j’étais partis sur cette solution pour voir comment logstash comprenait le fichier :
input { file{ path => ["C:/ELK/Logstash/logstash-6.6.2/conf/test.json"] sincedb_path => "NUL" start_position => "beginning" codec =>"json" } } filter{ } output { stdout { codec => rubydebug } }
Mais évidemment , ça part direct en JSON parse failure ..
Apres avoir écumé les forums , je me rend compte qu'il n'existe pas de méthode très simple pour traiter ce fichier JSON comme un tableau d'objet JSON à part entière parce qu'il est écrit avec une indentation en pretty... et que l'input file de logstash le comprend comme un fichier qu'il ne lit que ligne par ligne ... Dans certains cas il faut definir une règle & un pattern précis pour le multiline , dans un autre il faut simplement réorganiser le fichier json de manière a mettre 1 objet par ligne ..
J'ai un peu tout testé sans grand succès . C'est étonnant qu'il n'y ait pas moyen de traiter cet object JSON comme on pourrait le faire dans n'importe quel langage.
Est-ce que quelqu'un a un méthode simple ou un trick pour résoudre ce problème ?
EDIT :
Tout mes objets JSON commencent systématiquement avec la chaine de caractère "{
"reference":
Je me demande si il n'y a pas moyen de faire un multiline pattern basé la dessus .
Merci pour votre aide .