# 【ingest node】JSON processor 配列のパース処理に関して

**URL:** <https://discuss.elastic.co/t/ingest-node-json-processor/246385>\
**Category:** 日本語による質問・議論はこちら\
**Created:** [August 26, 2020, 4:39am UTC](https://discuss.elastic.co/t/ingest-node-json-processor/246385 "2020-08-26T04:39:55Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![harue](https://avatars.discourse-cdn.com/v4/letter/h/82dd89/32.png) [@harue](https://discuss.elastic.co/u/harue)\
**Post date:** [August 26, 2020, 4:39am UTC](https://discuss.elastic.co/t/ingest-node-json-processor/246385/1 "2020-08-26T04:39:55Z")

</div>

お世話になります。

Ingest nodeの[JSON processor](https://www.elastic.co/guide/en/elasticsearch/reference/current/json-processor.html)に関して質問させて頂きます。

以下にてmessage("objects"の配列に"references"の配列がネストされている)のデータをJSON processorを使いパース処理を検証しています。

Simulate上、"references"は"json\_target.objects"の値となっていますが、  
"json\_target.objects"と同じ階層の項目名にしたいです。(例："json\_target.objects.references")

上記を実現できる方法がありましたら教えてください。

▼Simulate

```
POST /_ingest/pipeline/_simulate
{
  "pipeline": {
  "processors": [
    {
      "json": {
        "field": "message",
        "target_field": "json_target"
      }
    },
    {
      "set": {
        "field": "_index",
        "value": "bbb"
      }
    }
  ],
  "on_failure": [
    {
      "set": {
        "field": "_index",
        "value": "failed-bbb"
      }
    },
    {
      "set": {
        "field": "error",
        "value": "{{ _ingest.on_failure_message }}"
      }
    }
  ]
  },
  "docs": [
    {
      "_index": "aaa",
      "_id": "id1",
      "_source": {
        "message": "{\"objects\":[{\"references\":[{\"id\":\"111\",\"source_name\":\"abc\",\"url\":\"https://aaa.bbb.org\"}]}],\"version\":\"2.0\",\"type\":\"bundle\"}"
      }
    }
  ]
}

```

▼Simulate結果

```
{
  "docs" : [
    {
      "doc" : {
        "_index" : "bbb",
        "_type" : "_doc",
        "_id" : "id1",
        "_source" : {
          "json_target" : {
            "type" : "bundle",
            "version" : "2.0",
            "objects" : [
              {
                "references" : [
                  {
                    "source_name" : "abc",
                    "url" : "https://aaa.bbb.org",
                    "id" : "111"
                  }
                ]
              }
            ]
          },
          "message" : """{"objects":[{"references":[{"id":"111","source_name":"abc","url":"https://aaa.bbb.org"}]}],"version":"2.0","type":"bundle"}"""
        },
        "_ingest" : {
          "timestamp" : "2020-08-26T04:17:06.724213Z"
        }
      }
    }
  ]
}

```

以上、お手数ですが回答を宜しくお願い致します。

---

<div class="post-metadata">

**Author:** ![Koji\_Kawamura](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/koji_kawamura/32/93938_2.png) [@Koji\_Kawamura](https://discuss.elastic.co/u/Koji_Kawamura)\
**Post date:** [September 10, 2020, 5:50am UTC](https://discuss.elastic.co/t/ingest-node-json-processor/246385/2 "2020-09-10T05:50:07Z")

</div>

@harue さん、

JSON processor でパースした後にさらに別のsetプロセッサを使ってreferencesを別の場所にコピーして、元のを削除すれば、階層を変えられると思うのですが、ちょっと実現させたい結果の JSON がどんなイメージなのか読み取れませんでした。

サンプルのデータでは、objects も配列なので、複数の要素が含まれる可能性があるのではないでしょうか？そして `objects[0]` と `objects[1]` のそれぞれの子要素で `references` を持っていた場合などはどう扱うのか、そもそも、`objects` は要素一つしか持たないという前提があるのかもですが。

サンプルの入力データを渡すと、どんな結果になるべきか、結果のJSONイメージを共有していただけたらもう少し役に立つコメントができるかもしれません。

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/elastic/original/3X/1/a/1ac57faf039f6b580b3f104ef42a2a89e41014de.png) [@system](https://discuss.elastic.co/u/system)\
**Post date:** [October 8, 2020, 5:50am UTC](https://discuss.elastic.co/t/ingest-node-json-processor/246385/3 "2020-10-08T05:50:25Z")

</div>

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