This repository illustrates and demonstrates the use of ElasticSearch Java API via Transport Client
and Java High Level REST Client
. If you want to see the sample of the old version, please visit the oldVersion branch.
- How to use Transport Client
- How to perform Administration operations
- Index creation
- Mapping settings
- How to use Java High Level REST Client
- How to perform CRUD operations
@Bean(destroyMethod = "close")
public TransportClient getTransportClient() throws UnknownHostException {
try (TransportClient client = new PreBuiltTransportClient(Settings.EMPTY)
.addTransportAddress(new TransportAddress(InetAddress.getByName(props.getClients().getHostname()),
props.getClients().getTransportPort()))){
return client;
}
}
@Bean(destroyMethod = "close")
public RestHighLevelClient getRestClient() {
return new RestHighLevelClient(RestClient.builder(new HttpHost(props.getClients().getHostname(),
props.getClients().getHttpPort(), props.getClients().getScheme())));
}
IndicesExistsRequest request = new IndicesExistsRequest(props.getIndex().getName());
IndicesExistsResponse indicesExistsResponse = indicesAdminClient.exists(request).actionGet();
indicesAdminClient.prepareCreate(props.getIndex().getName())
.setSettings(Settings.builder()
.put("index.number_of_shards", props.getIndex().getShard())
.put("index.number_of_replicas", props.getIndex().getReplica()))
.get();
XContentBuilder builder = jsonBuilder()
.startObject()
.startObject(props.getIndex().getType())
.startObject("properties")
.startObject("id")
.field("type", "text")
.endObject()
.startObject("firstname")
.field("type", "text")
.endObject()
.startObject("lastname")
.field("type", "text")
.endObject()
.startObject("message")
.field("type", "text")
.endObject()
.endObject()
.endObject()
.endObject();
indicesAdminClient.preparePutMapping(props.getIndex().getName())
.setType(props.getIndex().getType())
.setSource(builder.string(), XContentType.JSON).get();
IndexRequest request = new IndexRequest(props.getIndex().getName(), props.getIndex().getType());
request.source(gson.toJson(document), XContentType.JSON);
IndexResponse response = client.index(request);
sourceBuilder.query(builder);
SearchRequest searchRequest = getSearchRequest();
SearchResponse searchResponse = client.search(searchRequest);
SearchHits hits = searchResponse.getHits();
SearchHit[] searchHits = hits.getHits();
for (SearchHit hit : searchHits) {
Document doc = gson.fromJson(hit.getSourceAsString(), Document.class);
doc.setId(hit.getId());
result.add(doc);
}
result = getDocuments(QueryBuilders.queryStringQuery("*" + query.toLowerCase() + "*"));
DeleteRequest deleteRequest = new DeleteRequest(props.getIndex().getName(), props.getIndex().getType(), id);
mvn clean install
Testcontainers library needs Docker daemon, if you don't have it you should use -Dmaven.test.skip=true
parameter.
mvn spring-boot:run
With this option, you should provide an elasticsearch server
.
sh run.sh
With this option, this application and an elasticsearch server
run together.