# JSON string to Nested type

**URL:** <https://discuss.elastic.co/t/json-string-to-nested-type/214074>\
**Category:** Elasticsearch\
**Created:** [January 7, 2020, 2:30pm UTC](https://discuss.elastic.co/t/json-string-to-nested-type/214074 "2020-01-07T14:30:07Z")\
**Posts on this page:** 16\
**Page:** 1

<div class="post-metadata">

**Author:** ![arham](https://avatars.discourse-cdn.com/v4/letter/a/848f3c/32.png) [@arham](https://discuss.elastic.co/u/arham)\
**Post date:** [January 7, 2020, 2:30pm UTC](https://discuss.elastic.co/t/json-string-to-nested-type/214074/1 "2020-01-07T14:30:07Z")

</div>

Hi,

I am using ingest pipeline to map FScrawler fields to elasticsearch index fields.

I have json string like `"Tags": [{"Tag":"Ford"}, {"Tag":"BMW"}, {"Tag":"Fiat"}]` .

How i can map this data to my index nested type field using ingest pipeline?

Following is my index setting

```auto
PUT my_index
{
  "settings": {
    "number_of_shards": 1
  },
  "mappings": {
    "dynamic": false,
    "properties": {
      "Tags":
       {
        "type": "nested",
        "properties": { 
          "Tag": { "type": "keyword" }}
      }
    }
  }
}

```

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [January 7, 2020, 2:42pm UTC](https://discuss.elastic.co/t/json-string-to-nested-type/214074/2 "2020-01-07T14:42:43Z")

</div>

I'm not sure I'm understanding the question and how this relates to FSCrawler.

Could you explain with a full example of a document before being processed by an ingest pipeline and what the document should look like after it has been processed by the pipeline?

---

<div class="post-metadata">

**Author:** ![arham](https://avatars.discourse-cdn.com/v4/letter/a/848f3c/32.png) [@arham](https://discuss.elastic.co/u/arham)\
**Post date:** [January 8, 2020, 1:12pm UTC](https://discuss.elastic.co/t/json-string-to-nested-type/214074/3 "2020-01-08T13:12:20Z")

</div>

Sure i can explain more

I am using FScrawler for crawling PDF files content and custom metadata into elastic search already created index for fast search. PDF files has too many metadata field so i have used ingest pipeline with rename and remove processors that worked fine.

Now i have the only issue that i have multi value field in my elastic search index with nested type i.e.

```
 "Tags":
       {
        "type": "nested",
        "properties": { 
          "Tag": { "type": "keyword" }}
      }

```

ingest pipeline mapping

```
PUT _ingest/pipeline/my_mapping
{
  "processors": [
    {
      "rename": {
        "field": "meta.raw.Tags",
        "target_field": "Tags",
        "ignore_missing": true
      }
    },
    {
    "remove":{
      "field": ["meta"]
      }
    
    }
  ]
}

```

FSCrawler generated data

```
 "_source" : {
          "content" : "my test content",
          "meta" : {
            "date" : "2019-12-12T10:09:13.000+0000",
            "format" : "application/pdf; version=1.4",
            "created" : "2017-01-12T10:03:50.000+0000",
            "raw" : {
              "date" : "2019-12-12T15:09:13Z",
              "pdf:PDFVersion" : "1.4",
              "access_permission:can_print_degraded" : "true",
              "pdfa:PDFVersion" : "A-1a",
              "dc:format" : "application/pdf; version=1.4",
              "access_permission:fill_in_form" : "true",
              "pdf:encrypted" : "false",
              "modified" : "2019-12-12T15:09:13Z",
              "Status" : "1",
              "SeqNo" : "2",
              "created" : "2017-01-12T15:03:50Z",
              "access_permission:extract_for_accessibility" : "true",
              "Creation-Date" : "2017-01-12T15:03:50Z",
              "25107-0208-ComponentReleaseCertificate-20090207-5304-201912110909541826",
              "pdfaid:part" : "1",
              "OCR" : "1",
			  "Tags" : "\"Tags\": [{\"Tag\":\"Ford\"}, {\"Tag\":\"BMW\"}, {\"Tag\":\"Fiat\"}]",
            }
          }
        }
      }

```

after running fscrawler an error occured

```
ElasticsearchException[Elasticsearch exception [type=mapper_parsing_exception, reason=object mapping for [Tags] tried to parse field [Tags] as object, but found a concrete value]]

```

Please guide me how to solve this problem

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [January 8, 2020, 1:30pm UTC](https://discuss.elastic.co/t/json-string-to-nested-type/214074/4 "2020-01-08T13:30:09Z")

</div>

Please don't post unformatted code, logs, or configuration as it's very hard to read.

Instead, paste the text and format it with \</\> icon or pairs of triple backticks (```), and check the preview window to make sure it's properly formatted before posting it. This makes it more likely that your question will receive a useful answer.

It would be great if you could update your post to solve this.

---

<div class="post-metadata">

**Author:** ![arham](https://avatars.discourse-cdn.com/v4/letter/a/848f3c/32.png) [@arham](https://discuss.elastic.co/u/arham)\
**Post date:** [January 8, 2020, 1:37pm UTC](https://discuss.elastic.co/t/json-string-to-nested-type/214074/5 "2020-01-08T13:37:17Z")

</div>

I have updated format, please check now

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [January 8, 2020, 3:53pm UTC](https://discuss.elastic.co/t/json-string-to-nested-type/214074/6 "2020-01-08T15:53:14Z")

</div>

What is the mapping?

---

<div class="post-metadata">

**Author:** ![arham](https://avatars.discourse-cdn.com/v4/letter/a/848f3c/32.png) [@arham](https://discuss.elastic.co/u/arham)\
**Post date:** [January 8, 2020, 3:57pm UTC](https://discuss.elastic.co/t/json-string-to-nested-type/214074/7 "2020-01-08T15:57:43Z")

</div>

It is actually ingest pipeline to insert FSCrawler data in already created elastic search index fields

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [January 8, 2020, 4:08pm UTC](https://discuss.elastic.co/t/json-string-to-nested-type/214074/8 "2020-01-08T16:08:58Z")

</div>

Can you please share the current mapping?

---

<div class="post-metadata">

**Author:** ![arham](https://avatars.discourse-cdn.com/v4/letter/a/848f3c/32.png) [@arham](https://discuss.elastic.co/u/arham)\
**Post date:** [January 9, 2020, 5:40am UTC](https://discuss.elastic.co/t/json-string-to-nested-type/214074/9 "2020-01-09T05:40:22Z")

</div>

```
PUT _ingest/pipeline/my_mapping
{
  "processors": [
    {
      "rename": {
        "field": "meta.raw.Tags",
        "target_field": "Tags",
        "ignore_missing": true
      }
    },
    {
    "remove":{
      "field": ["meta"]
      }
    
    }
  ]
}
```

---

<div class="post-metadata">

**Author:** ![arham](https://avatars.discourse-cdn.com/v4/letter/a/848f3c/32.png) [@arham](https://discuss.elastic.co/u/arham)\
**Post date:** [January 10, 2020, 7:03am UTC](https://discuss.elastic.co/t/json-string-to-nested-type/214074/10 "2020-01-10T07:03:49Z")

</div>

I am stuck in this issue please help.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [January 10, 2020, 7:38am UTC](https://discuss.elastic.co/t/json-string-to-nested-type/214074/11 "2020-01-10T07:38:50Z")

</div>

You did not provide the mapping. This is something you can get with:

```auto
GET your_index_name/_mapping

```

---

<div class="post-metadata">

**Author:** ![arham](https://avatars.discourse-cdn.com/v4/letter/a/848f3c/32.png) [@arham](https://discuss.elastic.co/u/arham)\
**Post date:** [January 15, 2020, 12:08pm UTC](https://discuss.elastic.co/t/json-string-to-nested-type/214074/12 "2020-01-15T12:08:59Z")

</div>

```
{
  "indexamac" : {
    "mappings" : {
      "dynamic" : "false",
      "properties" : {
        "Tags" : {
          "type" : "nested",
          "properties" : {
            "Tag" : {
              "type" : "keyword"
            }
          }
        }
      }
    }
  }
}
```

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [January 15, 2020, 12:26pm UTC](https://discuss.elastic.co/t/json-string-to-nested-type/214074/13 "2020-01-15T12:26:31Z")

</div>

Why are you using nested here instead of a simple array of tags?  
Also I don't believe it's the complete mapping.

---

<div class="post-metadata">

**Author:** ![arham](https://avatars.discourse-cdn.com/v4/letter/a/848f3c/32.png) [@arham](https://discuss.elastic.co/u/arham)\
**Post date:** [January 15, 2020, 1:20pm UTC](https://discuss.elastic.co/t/json-string-to-nested-type/214074/14 "2020-01-15T13:20:45Z")

</div>

As per reference of following Elastic search reference

[https://www.elastic.co/guide/en/elasticsearch/reference/current/array.html](https://www.elastic.co/guide/en/elasticsearch/reference/current/array.html)

I am using nested type because field Tags is multi value and i want to query on each value independently.

---

<div class="post-metadata">

**Author:** ![dadoonet](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/dadoonet/32/137187_2.png) [@dadoonet](https://discuss.elastic.co/u/dadoonet)\
**Post date:** [January 15, 2020, 1:44pm UTC](https://discuss.elastic.co/t/json-string-to-nested-type/214074/15 "2020-01-15T13:44:55Z")

</div>

Do you have an example of a document and a query which won't work with an `object` and requires a `nested` instead?

I have an idea about it but I'd like to make sure if your use case actually needs it.

---

<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:** [February 12, 2020, 1:45pm UTC](https://discuss.elastic.co/t/json-string-to-nested-type/214074/16 "2020-02-12T13:45:00Z")

</div>

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