Как я могу использовать несколько фильтров XML для одного сообщения XML

Мне нужно проанализировать XML-документ (полученный как сообщение rabbitmq), но я хочу получить больше информации по некоторым фильтрам. Здесь XML часть моего logstash

if ([message] =~ /^</) {
  xml {
    ...
    xpath => [
      "/APIOS_MOM_EVENT/IDENT/NO_EMIARTE/text()", "NO_EMIARTE",
      "name(/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/*[not(self::METADATA)])","MESSAGE_TYPE",
      "name(/APIOS_MOM_EVENT/DATA/*)","RECOMMENDATIONS",
      "/APIOS_MOM_EVENT/DATA/APIOS_EXPORT/METADATA/CODE_OFFRE_WEB/text()","OFFRE_WEB"
    ]
    target => "xml"
  }
  alter {
    condrewrite => [
      "MESSAGE_TYPE","","EDITO"         
    ]
    condrewriteother => [
      "RECOMMENDATIONS","RECOMMENDATIONS","MESSAGE_TYPE","RECOMMENDATIONS"
    ]
    condrewriteother => [
      "RECOMMENDATIONS","SCHEDULE","MESSAGE_TYPE","SCHEDULE"
    ]
    remove_field => [ "RECOMMENDATIONS" ]
  }
  if [MESSAGE_TYPE]=="SCHEDULE" {        
    xml{
      source => "message"
      store_xml => false
      xpath => [            
        "/APIOS_MOM_EVENT/DATA/SCHEDULE/DAY/@DATE","DAY"
      ]
      target => "xml"          
    }
  }
}

Поэтому здесь, если у меня есть SCHEDULE MESSAGE_TYPE, я бы хотел добавить фильтр, чтобы получить ДЕНЬ, но это кажется довольно сложным. У меня такое ощущение, что MESSAGE_TYPE недоступно в моем заявлении if

Пока все хорошо if [MESSAGE_TYPE]=="SCHEDULE" {

1 ответ

Решение

Хорошо, я не знаю, почему это не работает, но код ниже работает хорошо

...
remove_field => [ "RECOMMENDATIONS" ]
      }
      if [MESSAGE_TYPE]=="SCHEDULE" {
        xml{
          source => "message"
          store_xml => false
          xpath => [
            "/APIOS_MOM_EVENT/DATA/SCHEDULE/DAY/@DATE","DAY",
            "/APIOS_MOM_EVENT/DATA/SCHEDULE/DAY/ELEMENT/NO_EMIARTE/text()","NO_EMIARTE",
            "/APIOS_MOM_EVENT/DATA/SCHEDULE/DAY/ELEMENT/ID_PROG/text()","ID_PROG"
          ]
          target => "xml"
        }
      }

Новые поля теперь хорошо отработаны в ES.

Другие вопросы по тегам