# Mapping es.mapping.id

**URL:** <https://discuss.elastic.co/t/mapping-es-mapping-id/477>\
**Category:** Elasticsearch\
**Tags:** es-hadoop\
**Created:** [May 11, 2015, 7:55am UTC](https://discuss.elastic.co/t/mapping-es-mapping-id/477 "2015-05-11T07:55:05Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![CG76](https://avatars.discourse-cdn.com/v4/letter/c/73ab20/32.png) [@CG76](https://discuss.elastic.co/u/CG76)\
**Post date:** [May 11, 2015, 7:55am UTC](https://discuss.elastic.co/t/mapping-es-mapping-id/477/1 "2015-05-11T07:55:05Z")

</div>

Hi all,

I tried to declare one of my json fields (mmsi) as es.mapping.id in EsBolt but it crashes with EsHadoopIllegalArgumentException. How do I resolve the problem? My stack trace is as follows:

java.lang.RuntimeException: org.elasticsearch.hadoop.EsHadoopIllegalArgumentException: [JsonExtractor for field [mmsi]] cannot extract value from entity [class java.lang.String] | instance [{"records":[{"receiveTime":1353801681000,"mmsi":111111111,"imo":7110024,"callSign":"VJHN","shipName":"TANUNDA","shipType":"Tug","toBow":8,"toStern":17,"toPort":4,"toStarboard":4,"epfd":1,"etaMonth":0,"etaDay":0,"etaHour":24,"etaMinute":60,"draught":3.0,"destination":"BRISBANE !","dte":false,"completeness":3}]}]  
at backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:128) ~[storm-core-0.9.4.jar:0.9.4]  
at backtype.storm.utils.DisruptorQueue.consumeBatchWhenAvailable(DisruptorQueue.java:99) ~[storm-core-0.9.4.jar:0.9.4]  
at backtype.storm.disruptor$consume\_batch\_when\_available.invoke(disruptor.clj:80) ~[storm-core-0.9.4.jar:0.9.4]  
at backtype.storm.daemon.executor$fn\_\_3439$fn\_\_3451$fn\_\_3498.invoke(executor.clj:748) ~[storm-core-0.9.4.jar:0.9.4]  
at backtype.storm.util$async\_loop$fn\_\_460.invoke(util.clj:463) ~[storm-core-0.9.4.jar:0.9.4]  
at clojure.lang.AFn.run(AFn.java:24) [clojure-1.5.1.jar:na]  
at java.lang.Thread.run(Thread.java:745) [na:1.8.0\_40]  
Caused by: org.elasticsearch.hadoop.EsHadoopIllegalArgumentException: [JsonExtractor for field [mmsi]] cannot extract value from entity [class java.lang.String] | instance [{"records":[{"receiveTime":1353801681000,"mmsi":111111111,"imo":7110024,"callSign":"VJHN","shipName":"TANUNDA","shipType":"Tug","toBow":8,"toStern":17,"toPort":4,"toStarboard":4,"epfd":1,"etaMonth":0,"etaDay":0,"etaHour":24,"etaMinute":60,"draught":3.0,"destination":"BRISBANE !","dte":false,"completeness":3}]}]  
at org.elasticsearch.hadoop.serialization.bulk.AbstractBulkFactory$FieldWriter.write(AbstractBulkFactory.java:97) ~[elasticsearch-spark\_2.11-2.1.0.Beta4.jar:2.1.0.Beta4]  
at org.elasticsearch.hadoop.serialization.bulk.TemplatedBulk.writeTemplate(TemplatedBulk.java:80) ~[elasticsearch-spark\_2.11-2.1.0.Beta4.jar:2.1.0.Beta4]  
at org.elasticsearch.hadoop.serialization.bulk.TemplatedBulk.write(TemplatedBulk.java:56) ~[elasticsearch-spark\_2.11-2.1.0.Beta4.jar:2.1.0.Beta4]  
at org.elasticsearch.hadoop.rest.RestRepository.writeToIndex(RestRepository.java:148) ~[elasticsearch-spark\_2.11-2.1.0.Beta4.jar:2.1.0.Beta4]  
at org.elasticsearch.storm.EsBolt.execute(EsBolt.java:116) ~[elasticsearch-storm-2.1.0.Beta4.jar:2.1.0.Beta4]  
at backtype.storm.daemon.executor$fn\_\_3439$tuple\_action\_fn\_\_3441.invoke(executor.clj:633) ~[storm-core-0.9.4.jar:0.9.4]  
at backtype.storm.daemon.executor$mk\_task\_receiver$fn\_\_3362.invoke(executor.clj:401) ~[storm-core-0.9.4.jar:0.9.4]  
at backtype.storm.disruptor$clojure\_handler$reify\_\_1445.onEvent(disruptor.clj:58) ~[storm-core-0.9.4.jar:0.9.4]  
at backtype.storm.utils.DisruptorQueue.consumeBatchToCursor(DisruptorQueue.java:125) ~[storm-core-0.9.4.jar:0.9.4]  
... 6 common frames omitted

Thanks,  
CG

---

<div class="post-metadata">

**Author:** ![CG76](https://avatars.discourse-cdn.com/v4/letter/c/73ab20/32.png) [@CG76](https://discuss.elastic.co/u/CG76)\
**Post date:** [May 12, 2015, 9:41am UTC](https://discuss.elastic.co/t/mapping-es-mapping-id/477/2 "2015-05-12T09:41:11Z")

</div>

Hi all,

I realize that esBolt cannot use any fields in a json array as the document id. It works if the field (mmsi) is not in an array. By the way, is it possible to declare mappings in esBolt? I can't find any documents on mappings using esBolt. Right now, I have to create the index with the correct mappings in Elasticsearch, then starts to populate Elasticsearch using my bolt which is like 2 separate processes.

Thanks,  
CG

---

<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:** [July 6, 2017, 1:28pm UTC](https://discuss.elastic.co/t/mapping-es-mapping-id/477/3 "2017-07-06T13:28:26Z")

</div>


