1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34 package fr.paris.lutece.plugins.elasticsearch.modules.statsfilter.service;
35
36 import fr.paris.lutece.portal.service.util.AppLogService;
37
38 import org.elasticsearch.action.ActionFuture;
39 import org.elasticsearch.action.admin.indices.create.CreateIndexRequestBuilder;
40 import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequestBuilder;
41 import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsRequest;
42 import org.elasticsearch.action.admin.indices.exists.indices.IndicesExistsResponse;
43
44 import org.elasticsearch.client.Client;
45
46 import org.elasticsearch.common.xcontent.XContentBuilder;
47 import static org.elasticsearch.common.xcontent.XContentFactory.jsonBuilder;
48
49 import java.io.IOException;
50 import org.elasticsearch.action.admin.indices.create.CreateIndexResponse;
51 import org.elasticsearch.indices.IndexAlreadyExistsException;
52
53
54
55
56
57 public class ElasticsearchUtils
58 {
59
60 public static void createIndex(Client client, String strIndex, String strDocumentType)
61 {
62 try
63 {
64 XContentBuilder mappingBuilder = jsonBuilder().startObject().startObject(strDocumentType)
65 .startObject("_timestamp").field("enabled", "true").endObject()
66 .endObject().endObject();
67 System.out.println(mappingBuilder.string());
68
69 CreateIndexRequestBuilder createIndexRequestBuilder = client.admin().indices().prepareCreate(strIndex);
70 createIndexRequestBuilder.addMapping(strDocumentType, mappingBuilder);
71 CreateIndexResponse createIndexResponse = createIndexRequestBuilder.execute().actionGet( Constants.TIMEOUT );
72
73 if (createIndexResponse != null && createIndexResponse.isAcknowledged())
74 {
75 AppLogService.info("Elasticsearch index : '" + strIndex + "' created for document type : '"
76 + strDocumentType + "'");
77 }
78 else
79 {
80 AppLogService.info("Elasticsearch failed to create index : '" + strIndex + "' !");
81 }
82
83 }
84 catch (IndexAlreadyExistsException e)
85 {
86 AppLogService.info("Elasticsearch index : '" + strIndex + "' already exists !" );
87 }
88 catch (IOException ex)
89 {
90 AppLogService.error("Error creating Elasticsearch index", ex);
91 }
92 }
93
94 public static void deleteIndex(Client client, String strIndex)
95 {
96 DeleteIndexRequestBuilder deleteIndex = client.admin().indices().prepareDelete(strIndex);
97 deleteIndex.execute().actionGet();
98 AppLogService.info("Elasticsearch index '" + strIndex + "' deleted !");
99 }
100
101 public static boolean isIndexExist(Client client, String strIndex)
102 {
103 ActionFuture<IndicesExistsResponse> exists = client.admin().indices()
104 .exists(new IndicesExistsRequest(strIndex));
105 IndicesExistsResponse actionGet = exists.actionGet();
106
107 return actionGet.isExists();
108 }
109 }