-
-
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)
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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