Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save hemanth22/f6a86fbb4ec77602610d4e0f43fb6b1e to your computer and use it in GitHub Desktop.
Save hemanth22/f6a86fbb4ec77602610d4e0f43fb6b1e to your computer and use it in GitHub Desktop.
Simple Java program to perform CRUD operations in Elastic Search using RestHighLevelClient. (Elastic search basic operations)
package es;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.ResultSetMetaData;
import java.sql.SQLException;
import java.sql.Statement;
import java.text.ParseException;
import java.util.ArrayList;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import org.apache.http.HttpHost;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexRequest;
import org.elasticsearch.action.admin.indices.delete.DeleteIndexResponse;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.delete.DeleteRequest;
import org.elasticsearch.action.delete.DeleteResponse;
import org.elasticsearch.action.index.IndexRequest;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.support.WriteRequest.RefreshPolicy;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.search.SearchHit;
import org.elasticsearch.search.builder.SearchSourceBuilder;
public class ESBasicOperations {
private static List<Map<String, Object>> resultSetToList(ResultSet rs) throws SQLException {
ResultSetMetaData md = rs.getMetaData();
int columns = md.getColumnCount();
List<Map<String, Object>> rows = new ArrayList<Map<String, Object>>();
while (rs.next()){
Map<String, Object> row = new LinkedHashMap<String, Object>(columns);
for(int i = 1; i <= columns; ++i){
row.put(md.getColumnName(i), rs.getObject(i));
}
rows.add(row);
}
return rows;
}
public static void main(String[] args) throws ParseException {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http")));
Connection connection = null;
Statement statement = null;
try {
Class.forName("com.mysql.jdbc.Driver");
connection = DriverManager.getConnection("jdbc:mysql://localhost:3306/company", "root", "root");
statement = connection.createStatement();
ResultSet rs = statement.executeQuery("SELECT * FROM employees");
List<Map<String, Object>> listOfMap = resultSetToList(rs);
System.out.println("----------Deleting Index: company------");
deleteIndex(client);
System.out.println("----------Creating Index: company (With bulk data from DB)------");
bulkCreate(client, listOfMap);
System.out.println("----------After Bulk Insert------");
viewIndex(client);
System.out.println("----------Adding one record to type 'employees' under index 'company'------");
createIndex(client);
System.out.println("----------After Inserting one record------");
viewIndex(client);
System.out.println("----------Updating Record Abubakkar Siddique age from 24 to 25------");
updateIndex(client);
System.out.println("----------After Updating------");
viewIndex(client);
System.out.println("----------Deleting user Abubakkar Siddique------");
deleteEntry(client);
System.out.println("----------After Deleting------");
viewIndex(client);
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
client.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
private static void createIndex(RestHighLevelClient client) {
String json = "{" +
"\"name\":\"shaik ghouse\"" +
",\"age\":\"23\"" +
"}";
try {
IndexRequest req = new IndexRequest("company", "employees", "4"/*optional*/);
req.setRefreshPolicy(RefreshPolicy.IMMEDIATE);
req.source(json, XContentType.JSON);
client.index(req);
} catch (IOException e1) {
e1.printStackTrace();
}
}
private static void viewIndex(RestHighLevelClient client) {
SearchRequest searchRequest = new SearchRequest("company/employees");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.size(1000);
searchSourceBuilder.sort("_id");
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
searchRequest.source(searchSourceBuilder);
try {
SearchResponse searchResponse = client.search(searchRequest);
SearchHit[] values = searchResponse.getHits().getHits();
if(values.length > 0) {
for(SearchHit s : values) {
System.out.println(s.getSourceAsString());
}
} else {
System.out.println("No results found!");
}
} catch (IOException e) {
e.printStackTrace();
}
}
private static void updateIndex(RestHighLevelClient client) {
String json = "{" +
"\"name\":\"Abubakkar Siddique\"" +
",\"age\":\"25\"" +
"}";
try {
IndexRequest req = new IndexRequest("company", "employees", "1"/*optional*/);
req.setRefreshPolicy(RefreshPolicy.IMMEDIATE);
req.source(json, XContentType.JSON);
client.index(req);
} catch (IOException e1) {
e1.printStackTrace();
}
}
private static void bulkCreate(RestHighLevelClient client, List<Map<String, Object>> list) {
try {
BulkRequest request = new BulkRequest();
request.setRefreshPolicy(RefreshPolicy.IMMEDIATE);
int index = 0;
for(Map<String, Object> map : list) {
request.add(new IndexRequest("company", "employees", String.valueOf(++index))
.source(map, XContentType.JSON));
}
client.bulk(request);
} catch (Exception e) {
e.printStackTrace();
}
}
private static void deleteEntry(RestHighLevelClient client) throws IOException {
DeleteRequest deleteRequest = new DeleteRequest("company", "employees", "1");
deleteRequest.setRefreshPolicy(RefreshPolicy.IMMEDIATE);
DeleteResponse res = client.delete(deleteRequest);
System.out.println("Deleted: " + res.status());
}
private static void deleteIndex(RestHighLevelClient client) throws IOException {
DeleteIndexRequest deleteRequest = new DeleteIndexRequest("company");
DeleteIndexResponse res = client.indices().delete(deleteRequest);
System.out.println("Deleted:" + res.isAcknowledged());
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment