Как задать условие в процессоре set (конвейер приема узлов)

#elasticsearch #kibana #filebeat #elk #metricbeat

Вопрос:

мой документ выглядит так, и мне нужно получить доступ к журналу.уровень, который является вложенным полем. может ли кто-нибудь помочь мне, так как мне нужно условие для установки нового поля под названием statuscode, если войти.уровень=ошибка.

 { "docs": [ {  "doc": {  "_index": "filebeat-mycluster",  "_type": "_doc",  "_id": "Xdffefepodmlajddwq",  "_source": {  "messageinfo": {  "log.origin": {  "file.line": 131  },  "@timestamp": "2021-11-15T10:07:36.125Z",  "service.name": "my-server",  "ecs.version": "1.6.0",  "log.level": "error",  "message": "Failed"  }    }  }  ] }  

Комментарии:

1. messageinfo.log.level

2. Привет, это не сработало, мне пришлось использовать: ctx.messageinfo[‘log.level’] == ‘ошибка’

Ответ №1:

Просто вот так:

 {  "set": {  "if": "ctx.messageinfo['log.level'] == 'error'",  "field": "statuscode",  "value": "whatever"  } }  

Обратите внимание, что если бы ваше log.level поле было правильно обведено точками, вы бы сделали это так:

 {  "set": {  "if": "ctx.messageinfo.log.level == 'error'",  "field": "statuscode",  "value": "whatever"  } }  

Комментарии:

1. Спасибо, что я поступил точно так же. Первый из них работал на меня. Второй попытался, но не получилось. Большое спасибо

2. Потрясающе, рад, что все получилось !!