# Java Update API and Nested field : MapperParsingException: object mapping for \[xxx\] tried to parse field \[xxx\] as object, but found a concrete value

**URL:** <https://discuss.elastic.co/t/java-update-api-and-nested-field-mapperparsingexception-object-mapping-for-xxx-tried-to-parse-field-xxx-as-object-but-found-a-concrete-value/125617>\
**Category:** Elasticsearch\
**Created:** [March 26, 2018, 1:43pm UTC](https://discuss.elastic.co/t/java-update-api-and-nested-field-mapperparsingexception-object-mapping-for-xxx-tried-to-parse-field-xxx-as-object-but-found-a-concrete-value/125617 "2018-03-26T13:43:04Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![MarneusCalgarXP](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/marneuscalgarxp/32/29228_2.png) [@MarneusCalgarXP](https://discuss.elastic.co/u/MarneusCalgarXP)\
**Post date:** [March 26, 2018, 1:43pm UTC](https://discuss.elastic.co/t/java-update-api-and-nested-field-mapperparsingexception-object-mapping-for-xxx-tried-to-parse-field-xxx-as-object-but-found-a-concrete-value/125617/1 "2018-03-26T13:43:05Z")

</div>

Hello,

I'm using elasticsearch 5.2.2.  
I have a document with a nested field called "policies".  
Sample data:

```
{ 
     "id": 1,
     "policies": [
            {
                "name": "A",
                "dates": [
                    "02/01/2013"
                ],
                "status": [
                    "CLOSED"
                ],
                "policieId": 1
            },
            {
                "name": "B",
                "dates": [
                    "04/04/2013"
                ],
                "status": [
                    "RUNNING"
                ],
                "policieId": 19
            }
        ]
}

```

When I want to update the "policies" nested field using the standard REST API, I use:

```
POST records/record/1/_update
{
  "doc": {
    "policies": [
      {
        "name": "c",
        "dates": ["06/03/2018"],
        "status": ["DRAFT"],
        "policieId": 6
      }
    ]
  }
}

```

And it works, it replaces my previous collection with the new one.  
When I want to do the same using java API, ElasticSearch returns me this error:

my code:

```
UpdateResponse updateResponse = client.prepareUpdate("records", "record", "1")
                .setDoc("policies", value)
                .setRefreshPolicy(WriteRequest.RefreshPolicy.IMMEDIATE)
                .get();

```

the "value" variable contains the JSON string :

```
[ {
  "name": "c",
  "dates": ["06/03/2018"],
  "status": ["DRAFT"],
  "policieId": 6
} ]

```

the error :

```
org.elasticsearch.index.mapper.MapperParsingException: object mapping for [policies] tried to parse field [policies] as object, but found a concrete value
	at org.elasticsearch.index.mapper.DocumentParser.parseObjectOrNested(DocumentParser.java:349)
	at org.elasticsearch.index.mapper.DocumentParser.parseObjectOrField(DocumentParser.java:446)
	at org.elasticsearch.index.mapper.DocumentParser.parseValue(DocumentParser.java:575)
	at org.elasticsearch.index.mapper.DocumentParser.innerParseObject(DocumentParser.java:395)
	at org.elasticsearch.index.mapper.DocumentParser.parseObjectOrNested(DocumentParser.java:372)
	at org.elasticsearch.index.mapper.DocumentParser.internalParseDocument(DocumentParser.java:93)
	at org.elasticsearch.index.mapper.DocumentParser.parseDocument(DocumentParser.java:66)
	at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:275)
	at org.elasticsearch.index.shard.IndexShard.prepareIndex(IndexShard.java:533)
	at org.elasticsearch.index.shard.IndexShard.prepareIndexOnPrimary(IndexShard.java:510)
	at org.elasticsearch.action.index.TransportIndexAction.prepareIndexOperationOnPrimary(TransportIndexAction.java:196)
	at org.elasticsearch.action.index.TransportIndexAction.executeIndexRequestOnPrimary(TransportIndexAction.java:201)
	at org.elasticsearch.action.index.TransportIndexAction.onPrimaryShard(TransportIndexAction.java:166)
	at org.elasticsearch.action.index.TransportIndexAction.onPrimaryShard(TransportIndexAction.java:68)
	at org.elasticsearch.action.support.replication.TransportWriteAction.shardOperationOnPrimary(TransportWriteAction.java:76)
	at org.elasticsearch.action.support.replication.TransportWriteAction.shardOperationOnPrimary(TransportWriteAction.java:49)
	at org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryShardReference.perform(TransportReplicationAction.java:914)
	at org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryShardReference.perform(TransportReplicationAction.java:884)
	at org.elasticsearch.action.support.replication.ReplicationOperation.execute(ReplicationOperation.java:113)
	at org.elasticsearch.action.support.replication.TransportReplicationAction$AsyncPrimaryAction.onResponse(TransportReplicationAction.java:327)
	at org.elasticsearch.action.support.replication.TransportReplicationAction$AsyncPrimaryAction.onResponse(TransportReplicationAction.java:262)
	at org.elasticsearch.action.support.replication.TransportReplicationAction$1.onResponse(TransportReplicationAction.java:864)
	at org.elasticsearch.action.support.replication.TransportReplicationAction$1.onResponse(TransportReplicationAction.java:861)
	at org.elasticsearch.index.shard.IndexShardOperationsLock.acquire(IndexShardOperationsLock.java:147)
	at org.elasticsearch.index.shard.IndexShard.acquirePrimaryOperationLock(IndexShard.java:1652)
	at org.elasticsearch.action.support.replication.TransportReplicationAction.acquirePrimaryShardReference(TransportReplicationAction.java:873)
	at org.elasticsearch.action.support.replication.TransportReplicationAction.access$400(TransportReplicationAction.java:92)
	at org.elasticsearch.action.support.replication.TransportReplicationAction$AsyncPrimaryAction.doRun(TransportReplicationAction.java:279)
	at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
	at org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryOperationTransportHandler.messageReceived(TransportReplicationAction.java:258)
	at org.elasticsearch.action.support.replication.TransportReplicationAction$PrimaryOperationTransportHandler.messageReceived(TransportReplicationAction.java:250)
	at org.elasticsearch.transport.RequestHandlerRegistry.processMessageReceived(RequestHandlerRegistry.java:69)
	at org.elasticsearch.transport.TransportService$7.doRun(TransportService.java:610)
	at org.elasticsearch.common.util.concurrent.ThreadContext$ContextPreservingAbstractRunnable.doRun(ThreadContext.java:596)
	at org.elasticsearch.common.util.concurrent.AbstractRunnable.run(AbstractRunnable.java:37)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
	at java.lang.Thread.run(Thread.java:745)
```

---

<div class="post-metadata">

**Author:** ![MarneusCalgarXP](https://sea2.discourse-cdn.com/elastic/user_avatar/discuss.elastic.co/marneuscalgarxp/32/29228_2.png) [@MarneusCalgarXP](https://discuss.elastic.co/u/MarneusCalgarXP)\
**Post date:** [March 27, 2018, 3:48pm UTC](https://discuss.elastic.co/t/java-update-api-and-nested-field-mapperparsingexception-object-mapping-for-xxx-tried-to-parse-field-xxx-as-object-but-found-a-concrete-value/125617/2 "2018-03-27T15:48:30Z")

</div>

I found a workaround using update by hashmap, as stated here (2nd sample):

- [https://www.elastic.co/guide/en/elasticsearch/client/java-rest/master/java-rest-high-document-update.html#\_updates\_with\_a\_partial\_document](https://www.elastic.co/guide/en/elasticsearch/client/java-rest/master/java-rest-high-document-update.html#_updates_with_a_partial_document)

---

<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:** [April 24, 2018, 3:48pm UTC](https://discuss.elastic.co/t/java-update-api-and-nested-field-mapperparsingexception-object-mapping-for-xxx-tried-to-parse-field-xxx-as-object-but-found-a-concrete-value/125617/3 "2018-04-24T15:48:41Z")

</div>

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