title: Indexing pdf/word using inguest-attachment plugin in elasticsearch via java code
body: <p>Am trying to index my word/pdf document so that I created one util program using java to encode my files into base64 and then am trying to index them in ElasticSearch.</p>
  
  <p>Please find my below code that I able to encode my files into base64. Now, I am not sure how can I index them in ElasticSearch</p>
  
  <p>Please find my java code below.</p>
  
  <pre><code>public static void main(String args[]) throws IOException {
      String filePath = "D:\\\\1SearchEngine\\testing.pdf";
      String encodedfile = null;
      RestHighLevelClient restHighLevelClient = null;
      File file = new File(filePath);
      try {
          FileInputStream fileInputStreamReader = new FileInputStream(file);
          byte[] bytes = new byte[(int) file.length()];
          fileInputStreamReader.read(bytes);
          encodedfile = new String(Base64.getEncoder().encodeToString(bytes));
          //System.out.println(encodedfile);
      } catch (FileNotFoundException e) {
          e.printStackTrace();
      }
  
      try {
          if (restHighLevelClient != null) {
              restHighLevelClient.close();
          }
      } catch (final Exception e) {
          System.out.println("Error closing ElasticSearch client: ");
      }
  
      try {
          restHighLevelClient = new RestHighLevelClient(RestClient.builder(new HttpHost("localhost", 9200, "http"),
                  new HttpHost("localhost", 9201, "http")));
      } catch (Exception e) {
          System.out.println(e.getMessage());
      }
  
      IndexRequest request = new IndexRequest( "attach_local", "doc", "103");   
      Map&lt;String, Object&gt; jsonMap = new HashMap&lt;&gt;();
      jsonMap.put("resume", "Karthikeyan");
      jsonMap.put("postDate", new Date());
      jsonMap.put("resume", encodedfile);
      try {
          IndexResponse response = restHighLevelClient.index(request);
      } catch(ElasticsearchException e) {
          if (e.status() == RestStatus.CONFLICT) {
  
          }
      }
  }
  </code></pre>
  
  <p>Am using ElasticSearch 6.2.3 version and i have installed ingest-attachment plugin version 6.3.0</p>
  
  <p>Am using below dependency for ElasticSearch Client</p>
  
  <pre><code>&lt;dependency&gt;
      &lt;groupId&gt;org.elasticsearch.client&lt;/groupId&gt;
      &lt;artifactId&gt;elasticsearch-rest-high-level-client&lt;/artifactId&gt;
      &lt;version&gt;6.1.2&lt;/version&gt;
  &lt;/dependency&gt;
  </code></pre>
  
  <p>Please find my mapping details</p>
  
  <pre><code>PUT attach_local
  {
    "mappings" : {
      "doc" : {
        "properties" : {
          "attachment" : {
            "properties" : {
              "content" : {
                "type" : "binary"
              },
              "content_length" : {
                "type" : "long"
              },
              "content_type" : {
                "type" : "text"
              },
              "language" : {
                "type" : "text"
              }
            }
          },
          "resume" : {
            "type" : "text"
          }
        }
      }
    }
  }
  
  PUT _ingest/pipeline/attach_local
  {
    "description" : "Extract attachment information",
    "processors" : [
      {
        "attachment" : {
          "field" : "resume"
        }
      }
    ]
  }
  </code></pre>
  
  <p>Now am getting the below error from java while create index </p>
  
  <pre><code>Exception in thread "main" org.elasticsearch.action.ActionRequestValidationException: Validation Failed: 1: source is missing;2: content type is missing;
      at org.elasticsearch.action.ValidateActions.addValidationError(ValidateActions.java:26)
      at org.elasticsearch.action.index.IndexRequest.validate(IndexRequest.java:153)
      at org.elasticsearch.client.RestHighLevelClient.performRequest(RestHighLevelClient.java:436)
      at org.elasticsearch.client.RestHighLevelClient.performRequestAndParseEntity(RestHighLevelClient.java:429)
      at org.elasticsearch.client.RestHighLevelClient.index(RestHighLevelClient.java:312)
      at com.es.utility.DocumentIndex.main(DocumentIndex.java:82)
  </code></pre>