title: How to use Elasticsearch Rest api in java?
body: <p>I am using Apache Http client for making use of ElasticSearch Rest Api, but I am always getting HTTP error code as 200. Please help </p>
  
  <p>Java code</p>
  
  <pre><code>import java.io.BufferedReader;
  import java.io.File;
  import java.io.IOException;
  import java.io.InputStreamReader;
  import java.net.MalformedURLException;
  import java.util.Scanner;
  
  import org.apache.http.HttpResponse;
  import org.apache.http.client.methods.HttpPost;
  import org.apache.http.entity.StringEntity;
  import org.apache.http.impl.client.DefaultHttpClient;
  
  public class ApacheHttpClientPost {
  
      public static void main(String[] args) {
          String path="C:\\Tools\\ElasticSearchApi\\javadoc.txt", filecontent="";
          ApacheHttpClientPost apacheHttpClientPost = new ApacheHttpClientPost();
          try {
              DefaultHttpClient httpClient = new DefaultHttpClient();
              HttpPost postRequest = new HttpPost("http://localhost:9200/versioneg/message/_percolate");
              filecontent=apacheHttpClientPost.readFileContent(path);
              System.out.println(filecontent);
              StringEntity input = new StringEntity(filecontent);
              input.setContentType("application/json");
              postRequest.setEntity(input);
              HttpResponse response = httpClient.execute(postRequest);
              if (response.getStatusLine().getStatusCode() != 201) {
                  throw new RuntimeException("Failed : HTTP error code : " + response.getStatusLine().getStatusCode());
              }
              BufferedReader br = new BufferedReader(new InputStreamReader((response.getEntity().getContent())));
              String output;
              System.out.println("Output from Server .... \n");
              while ((output = br.readLine()) != null) {
  
                  System.out.println(output);
              }
              httpClient.getConnectionManager().shutdown();
          } catch (MalformedURLException e) {
              e.printStackTrace();
          } catch (IOException e) {
              e.printStackTrace();
          }
      }
  
      private String readFileContent(String pathname) throws IOException {
  
          File file = new File(pathname);
          StringBuilder fileContents = new StringBuilder((int)file.length());
          Scanner scanner = new Scanner(file);
          String lineSeparator = System.getProperty("line.separator");
  
          try {
              while(scanner.hasNextLine()) {        
                  fileContents.append(scanner.nextLine() + lineSeparator);
              }
              return fileContents.toString();
          } finally {
              scanner.close();
          }
      }
  }
  </code></pre>
  
  <p>Console</p>
  
  <pre><code>{
     "doc": {
        "os": "Linux",
        "product": {
           "name": "abc",
           "version": 10.1,
           "configversion": 1,
           "arch": 32,
           "license": "commercial",
           "db": {
              "@type": "Oracle"
           }
        }
     }
  }
  
  Exception in thread "main" java.lang.RuntimeException: Failed : HTTP error code : 200
      at com.informatica.zanshin.esapi.utils.ApacheHttpClientPost.main(ApacheHttpClientPost.java:31)
  </code></pre>
  
  <p>Here is elasticsearch sense screenshot</p>
  
  <p><img src="https://i.stack.imgur.com/q6gU1.png" alt="enter image description here"></p>