Logstash plugin input ES: erreur de syntaxe avec le script painless dans query

Bonjour,

j'ai une erreur de syntaxe dans ma requête contenant un script painless. EN effet ma requête ci dessous contient des simples quotes ( ' ) et cela me génère une erreur de syntaxe dans logstash car l'option query encadre la requête avec un simple quote ( ' ). J'ai échappé dans le logstash avec des anti-slash () mais si cette fois ci, il n'y a plus d'erreurs au niveau de logstash j'ai maintenant une erreur de retour au niveau d'elastisearch concernant la requête vu que les quotes du script painless ont été échappé.

Ci dessous mon code sans echappé:

    input {
      elasticsearch {
      hosts => ["localhost:9200"]
      index => "index-2018.03.04"
      query => "{"query": { "query_string": { "query": "*" } },"aggs" : {"pc_process" : {"terms" : {"script" : { "source": "doc['beat.hostname'].value + '_' + doc['system.process.name'].value + '_' + doc['system.process.pid'].value", "lang": "painless"}},"aggs" : {"bytes_avg" : {"avg" : { "field" : "system.process.memory.rss.bytes"}},"pct_avg" : { "avg" : { "field" : "system.process.memory.rss.pct" } }}} }}"
      size => 100
     docinfo => true
    docinfo_target => "@metadata"
    scroll => "5m"
    }
 }

output {
  elasticsearch {
  hosts => ["localhost:9200"]
  index => "v15-test-%{+YYYY.MM.dd}"
 }
 stdout { codec => rubydebug }
}

Ma requête échappée avec des anti-slash qui me génère plus d'erreurs au niveau de logstash mais au niveau du retour d'elsatisearch concernant la syntaxe:

     query => "{"query": { "query_string": { "query": "*" } },"aggs" : {"pc_process" : {"terms" : {"script" : { "source": "doc[\'beat.hostname\'].value + \'_\' + doc[\'system.process.name\'].value + \'_\' + doc[\'system.process.pid\'].value", "lang": "painless"}},"aggs" : {"bytes_avg" : {"avg" : { "field" : "system.process.memory.rss.bytes"}},"pct_avg" : { "avg" : { "field" : "system.process.memory.rss.pct" } }}} }}"

l'erreur de retour d'élasticsearch sur la syntaxe:

      Error: [400] {"error":{"root_cause":[{"type":"parsing_exception","reason":"[script] failed to parse field [source]","line":1,"col":108}],"type":"parsing_exception","reason":"[terms] failed to parse field [script]","line":1,"col":108,"caused_by":{"type":"parsing_exception","reason":"[script] failed to parse field [source]","line":1,"col":108,"caused_by":{"type":"unchecked_i_o_exception","reason":"com.fasterxml.jackson.core.JsonParseException: Unrecognized character escape ''' (code 39)\n at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@37044430; line: 1, column: 115]","caused_by":{"type":"json_parse_exception","reason":"Unrecognized character escape ''' (code 39)\n at [Source: org.elasticsearch.transport.netty4.ByteBufStreamInput@37044430; line: 1, column: 115]"}}}},"status":400}

Ma question est comment gérer ce cas? Quelle est la bonne syntaxe ?

Merci par avance de votre aide!

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