Logstash : XML을 JSON으로 배열에서 문자열로 출력

Ascalonian

Logstash를 사용하여 XML을 ElasticSearch 용 JSON으로 변환하는 중입니다. 값을 읽고 ElasticSearch로 보낼 수 있습니다. 문제는 모든 값이 배열로 나오는 것입니다. 나는 그것들이 단지 문자열로 나오도록 만들고 싶습니다. replace각 필드에 대해 개별적으로 할 수 있다는 것을 알고 있지만 중첩 필드가 3 단계 깊이 인 문제가 발생합니다.

XML

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<acs2:SubmitTestResult xmlns:acs2="http://tempuri.org/" xmlns:acs="http://schemas.sompleace.org" xmlns:acs1="http://schemas.someplace.org">
    <acs2:locationId>Location Id</acs2:locationId>
    <acs2:userId>User Id</acs2:userId>
    <acs2:TestResult>
        <acs1:CreatedBy>My Name</acs1:CreatedBy>
        <acs1:CreatedDate>2015-08-07</acs1:CreatedDate>
        <acs1:Output>10.5</acs1:Output>
    </acs2:TestResult>
</acs2:SubmitTestResult>

Logstash 구성

input {
    file {
        path => "/var/log/logstash/test.xml"
    }
}
filter {
    multiline {
        pattern => "^\s\s(\s\s|\<\/acs2:SubmitTestResult\>)"
        what => "previous"
    }
    if "multiline" in [tags] {
        mutate {
            replace => ["message", '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>%{message}']
        }
        xml {
            target => "SubmitTestResult"
            source => "message"
        }
        mutate {
            remove_field => ["message", "@version", "host", "@timestamp", "path", "tags", "type"]
            remove_field => ["entry", "[SubmitTestResult][xmlns:acs2]", "[SubmitTestResult][xmlns:acs]", "[SubmitTestResult][xmlns:acs1]"]

            # This works
            replace => [ "[SubmitTestResult][locationId]", "%{[SubmitTestResult][locationId]}" ]

            # This does NOT work
            replace => [ "[SubmitTestResult][TestResult][CreatedBy]", "%{[SubmitTestResult][TestResult][CreatedBy]}" ]
        }
    }
}
output {
    stdout {
        codec => "rubydebug"
    }
    elasticsearch {
        index => "xmltest"
        cluster => "logstash"
    }
}

예제 출력

{
   "_index": "xmltest",
   "_type": "logs",
   "_id": "AU8IZBURkkRvuur_3YDA",
   "_version": 1,
   "found": true,
   "_source": {
      "SubmitTestResult": {
         "locationId": "Location Id",
         "userId": [
            "User Id"
         ],
         "TestResult": [
            {
               "CreatedBy": [
                  "My Name"
               ],
               "CreatedDate": [
                  "2015-08-07"
               ],
               "Output": [
                  "10.5"
               ]
            }
         ]
      }
    }
}

보시다시피 출력은 각 요소에 대한 배열입니다 (대체 한 locationId 제외). 각 요소를 교체 할 필요가 없습니다. 출력이 제대로 나오도록 구성을 조정하는 방법이 있습니까? 그렇지 않은 경우 어떻게 3 단계를 깊숙이 얻을 수 replace있습니까?

--최신 정보--

테스트 결과에서 3 레벨에 도달하는 방법을 알아 냈습니다. 교체는 다음과 같습니다.

replace => [ "[SubmitTestResult][TestResult][0][CreatedBy]", "%{[SubmitTestResult][TestResult][0][CreatedBy]}" ]
Ascalonian

나는 그것을 알아. 여기에 해결책이 있습니다.

replace => [ "[SubmitTestResult][TestResult][0][CreatedBy]", "%{[SubmitTestResult][TestResult][0][CreatedBy]}" ]

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

PHP 배열에서 JSON으로 읽을 수있는 출력

분류에서Dev

MapReduce 분할 입력 문자열을 출력 배열로

분류에서Dev

문자열을 기반으로 문장에서 단어를 배열로 추출

분류에서Dev

Haskell : 튜플 목록을 문자열 출력으로 출력

분류에서Dev

출력을 문자열로 형식화

분류에서Dev

tostring 출력을 문자열로 분할

분류에서Dev

logstash는 동적으로 json을 구문 분석하여 출력에 새 필드를 추가합니다.

분류에서Dev

출력을 stdout으로 문자열로 보내는 방법

분류에서Dev

PHP에서 문자열을 배열로 변환하고 출력 한 다음 오름차순 및 내림차순으로 출력

분류에서Dev

PHP 분할 문자열 출력을 무작위로 배열에 삽입

분류에서Dev

Python에서 SQL 출력을 문자열로 변환

분류에서Dev

문자열의 출력을 숫자 값으로 변환

분류에서Dev

logstash에서 elasticsearch로 출력 구성

분류에서Dev

문자 배열을 16 진 문자열로 변환-예기치 않은 출력

분류에서Dev

문자열을 입력으로 사용하여 텍스트에서 줄 추출

분류에서Dev

필터 / 유사 부분 문자열을 기반으로 배열에서 배열 추출

분류에서Dev

자바 - JSON 형식으로 추출 배열 JSON에서 문자열 변환

분류에서Dev

Javascript에서 문자열을 json으로 출력하는 방법은 무엇입니까?

분류에서Dev

문자열을 입력으로 받아 C의 문자 배열에 저장

분류에서Dev

문자열의 명령을 출력으로 바꾸기

분류에서Dev

Python : 표 형식으로 문자열을 출력하는 방법

분류에서Dev

string. Linq 쿼리를 결합하여 배열에서 두 개의 문자열을 병합하고 단일 쉼표로 구분 된 문자열로 출력

분류에서Dev

문자열 값을 입력으로 분할 된 배열로

분류에서Dev

Python에서 사용자 입력으로 배열을 만드는 문제

분류에서Dev

Bash는 JSON 출력에서 문자열을 추출하여 배열에 저장합니다.

분류에서Dev

출력을 위해 문자 배열에서 동일한 문자 배열로 최소 최대 값을 설정하는 방법

분류에서Dev

VB.net에서 문자열을 입력 된 길이 문자열 배열로 분할하는 방법

분류에서Dev

JSON 배열을 행으로 출력하는 Google Apps Script

분류에서Dev

열 출력을 문자열로 선택합니다. 하이브

Related 관련 기사

  1. 1

    PHP 배열에서 JSON으로 읽을 수있는 출력

  2. 2

    MapReduce 분할 입력 문자열을 출력 배열로

  3. 3

    문자열을 기반으로 문장에서 단어를 배열로 추출

  4. 4

    Haskell : 튜플 목록을 문자열 출력으로 출력

  5. 5

    출력을 문자열로 형식화

  6. 6

    tostring 출력을 문자열로 분할

  7. 7

    logstash는 동적으로 json을 구문 분석하여 출력에 새 필드를 추가합니다.

  8. 8

    출력을 stdout으로 문자열로 보내는 방법

  9. 9

    PHP에서 문자열을 배열로 변환하고 출력 한 다음 오름차순 및 내림차순으로 출력

  10. 10

    PHP 분할 문자열 출력을 무작위로 배열에 삽입

  11. 11

    Python에서 SQL 출력을 문자열로 변환

  12. 12

    문자열의 출력을 숫자 값으로 변환

  13. 13

    logstash에서 elasticsearch로 출력 구성

  14. 14

    문자 배열을 16 진 문자열로 변환-예기치 않은 출력

  15. 15

    문자열을 입력으로 사용하여 텍스트에서 줄 추출

  16. 16

    필터 / 유사 부분 문자열을 기반으로 배열에서 배열 추출

  17. 17

    자바 - JSON 형식으로 추출 배열 JSON에서 문자열 변환

  18. 18

    Javascript에서 문자열을 json으로 출력하는 방법은 무엇입니까?

  19. 19

    문자열을 입력으로 받아 C의 문자 배열에 저장

  20. 20

    문자열의 명령을 출력으로 바꾸기

  21. 21

    Python : 표 형식으로 문자열을 출력하는 방법

  22. 22

    string. Linq 쿼리를 결합하여 배열에서 두 개의 문자열을 병합하고 단일 쉼표로 구분 된 문자열로 출력

  23. 23

    문자열 값을 입력으로 분할 된 배열로

  24. 24

    Python에서 사용자 입력으로 배열을 만드는 문제

  25. 25

    Bash는 JSON 출력에서 문자열을 추출하여 배열에 저장합니다.

  26. 26

    출력을 위해 문자 배열에서 동일한 문자 배열로 최소 최대 값을 설정하는 방법

  27. 27

    VB.net에서 문자열을 입력 된 길이 문자열 배열로 분할하는 방법

  28. 28

    JSON 배열을 행으로 출력하는 Google Apps Script

  29. 29

    열 출력을 문자열로 선택합니다. 하이브

뜨겁다태그

보관