Git Repositories

Initial
[xerox-elastic-poc.git] / src / main / java / com / viseo / xerox / elastic / ESRequest.java
1 package com.viseo.xerox.elastic;
2
3 import org.apache.commons.io.IOUtils;
4 import org.apache.http.HttpResponse;
5 import org.apache.http.client.HttpClient;
6 import org.apache.http.client.methods.HttpDelete;
7 import org.apache.http.client.methods.HttpGet;
8 import org.apache.http.client.methods.HttpPut;
9 import org.apache.http.client.utils.URIBuilder;
10 import org.apache.http.entity.StringEntity;
11 import org.apache.http.impl.client.HttpClientBuilder;
12
13 import java.io.IOException;
14 import java.io.InputStream;
15 import java.net.URISyntaxException;
16 import java.nio.charset.StandardCharsets;
17
18 public class ESRequest {
19
20     private final String url;
21
22     public ESRequest(String url) {
23         this.url = url;
24     }
25
26     private HttpClient getClient() {
27         return HttpClientBuilder.create().build();
28     }
29
30     private void printResultStatus(HttpResponse response) {
31         System.out.println("  → " + response.getStatusLine());
32     }
33
34     private void printAction(String description) {
35         System.out.print(description);
36     }
37
38     private StringEntity getEntity(String json) {
39         return new StringEntity(json, StandardCharsets.UTF_8);
40     }
41
42     public void dropIndex(String indexName) throws IOException {
43         printAction(String.format("Dropping index %s…", indexName));
44         HttpDelete delete = new HttpDelete(String.format("%s/%s", url, indexName));
45         HttpResponse response = getClient().execute(delete);
46         printResultStatus(response);
47     }
48
49     public void createIndex(String jsonIndex, String indexName) throws IOException {
50         printAction(String.format("Creating index %s…", indexName));
51         HttpPut put = new HttpPut(String.format("%s/%s", url, indexName));
52         put.setEntity(getEntity(jsonIndex));
53         HttpResponse response = getClient().execute(put);
54         printResultStatus(response);
55     }
56
57     public void paramMapping(String jsonMapping, String indexName, String typeName) throws IOException {
58         printAction(String.format("Setting mappings for %s/%s…", indexName, typeName));
59         HttpPut put = new HttpPut(String.format("%s/%s/_mapping/%s", url, indexName, typeName));
60         put.setEntity(getEntity(jsonMapping));
61         HttpResponse response = getClient().execute(put);
62         printResultStatus(response);
63     }
64
65     public void index(String json, String indexName, String typeName, Long id) throws IOException {
66         printAction(String.format("Indexing %s/%s/%d…", indexName, typeName, id));
67         HttpPut put = new HttpPut(String.format("%s/%s/%s/%d", url, indexName, typeName, id));
68         put.setEntity(getEntity(json));
69         HttpResponse response = getClient().execute(put);
70         printResultStatus(response);
71     }
72
73     public String find(String jsonRequest, String indexName, String queryString) throws URISyntaxException, IOException {
74         printAction(String.format("Querying %s with « %s »…", indexName, queryString));
75         HttpGet get = new HttpGet(String.format("%s/%s/_search", url, indexName));
76         get.setURI(new URIBuilder(get.getURI()).addParameter("source", jsonRequest).build());
77         HttpResponse response = getClient().execute(get);
78         printResultStatus(response);
79         InputStream content = response.getEntity().getContent();
80         return IOUtils.toString(content, StandardCharsets.UTF_8.name());
81     }
82 }