Actuellement, j'analyse les données de ma base de données MySQL sur les sous-titres, et je les place dans ElasticSearch 5.2. Quoi qu'il en soit, mon logstash ES a le filtre suivant :
filter {
grok {
match => ["subtitles", "%{TIME:[_subtitles][start]} --> %{TIME:[_subtitles][end]}%{GREEDYDATA:[_subtitles][sentence]}" ]
}
}
ce qui donne le résultat suivant :
"_subtitles": {
"sentence": [
"im drinking latte",
"im drinking coffee",
"while eating a missisipi cake"
],
"start": [
"00:00:00.934",
"00:00:01.934",
"00:00:04.902"
],
"end": [
"00:00:02.902",
"00:00:03.902",
"00:00:05.839"
]
}
mais ce que je veux, c'est ça :
"_subtitles": [
{
"sentence": "im drinking latte",
"start": "00:00:00.934",
"end": "00:00:02.902"
},
{... same structure as above},
{... same structure as above},
]
En gardant à l'esprit que les _sous-titres seront imbriqués par mappage prédéfini.
Et les données originales sont les suivantes :
00:00:00.934 --> 00:00:02.902
im drinking latte
00:00:01.934 --> 00:00:03.902
im drinking coffee
00:00:04.902 --> 00:00:05.839
while eating a missisipi cake
Comment puis-je y parvenir en utilisant le modèle de correspondance et les caractères de remplacement de Grok ?