title: Elasticsearch Parse Exception error when attempting to index PDF
body: <p>I'm just getting started with elasticsearch. Our requirement has us needing to index thousands of PDF files and I'm having a hard time getting just ONE of them to index successfully.</p>
  
  <p>Installed the Attachment Type plugin and got response: <code>Installed mapper-attachments</code>.</p>
  
  <p>Followed the <a href="http://www.elasticsearch.org/tutorials/2011/07/18/attachment-type-in-action.html" rel="noreferrer">Attachment Type in Action tutorial</a> but the process hangs and <strong>I don't know how to interpret the error message</strong>. Also tried the <a href="https://gist.github.com/1075067" rel="noreferrer">gist</a> which hangs in the same place.</p>
  
  <pre><code>$ curl -X POST "localhost:9200/test/attachment/" -d json.file 
  {"error":"ElasticSearchParseException[Failed to derive xcontent from (offset=0, length=9): [106, 115, 111, 110, 46, 102, 105, 108, 101]]","status":400}
  </code></pre>
  
  <p>More details:</p>
  
  <p>The <code>json.file</code> contains an embedded Base64 PDF file (as per instructions). The first line of the file <em>appears</em> correct (to me anyway): <code>{"file":"JVBERi0xLjQNJeLjz9MNCjE1OCAwIG9iaiA8</code>...</p>
  
  <p>I'm not sure if maybe the <code>json.file</code> is invalid or if maybe elasticsearch just isn't set up to parse PDFs properly?!?</p>
  
  <p><strong>Encoding</strong> - Here's how we're encoding the PDF into <code>json.file</code> (as per tutorial):</p>
  
  <pre><code>coded=`cat fn6742.pdf | perl -MMIME::Base64 -ne 'print encode_base64($_)'`
  json="{\"file\":\"${coded}\"}"
  echo "$json" &gt; json.file
  </code></pre>
  
  <p>also tried:</p>
  
  <pre><code>coded=`openssl base64 -in fn6742.pdf
  </code></pre>
  
  <p>log: </p>
  
  <pre><code>[2012-06-07 12:32:16,742][DEBUG][action.index             ] [Bailey, Paul] [test][0], node[AHLHFKBWSsuPnTIRVhNcuw], [P], s[STARTED]: Failed to execute [index {[test][attachment][DauMB-vtTIaYGyKD4P8Y_w], source[json.file]}]
  org.elasticsearch.ElasticSearchParseException: Failed to derive xcontent from (offset=0, length=9): [106, 115, 111, 110, 46, 102, 105, 108, 101]
      at org.elasticsearch.common.xcontent.XContentFactory.xContent(XContentFactory.java:147)
      at org.elasticsearch.common.xcontent.XContentHelper.createParser(XContentHelper.java:50)
      at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:451)
      at org.elasticsearch.index.mapper.DocumentMapper.parse(DocumentMapper.java:437)
      at org.elasticsearch.index.shard.service.InternalIndexShard.prepareCreate(InternalIndexShard.java:290)
      at org.elasticsearch.action.index.TransportIndexAction.shardOperationOnPrimary(TransportIndexAction.java:210)
      at org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction$AsyncShardOperationAction.performOnPrimary(TransportShardReplicationOperationAction.java:532)
      at org.elasticsearch.action.support.replication.TransportShardReplicationOperationAction$AsyncShardOperationAction$1.run(TransportShardReplicationOperationAction.java:430)
      at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
      at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
      at java.lang.Thread.run(Thread.java:680)
  </code></pre>
  
  <p>Hoping someone can help me see what I'm missing or did wrong? </p>