Migrasi data Elasticsearch di java
Elasticsearch adalah salah satu database yang masuk ke dunia NoSQL dengan fokus di search engine database. Elasticsearch ditenagai oleh Apache Lucene yang juga merupakan search engine database yang memiliki query low level. Elasticsearch memiliki query yang lebih mudah untuk digunakan karena berbasis RESTful.
Dependency yang digunakan yaitu json-simple dan elasticsearch rest high level client, untuk dependency elastic sesuaikan dengan elastic yang digunakan, contoh yang saya gunakan yaitu 7.10
Intellij IDEA Ultimate Edition
IntelliJ IDEA memiliki editor yang mendukung code completion, sebuah fitur yang dapat membantu kita untuk menuliskan kode dengan cepat. IntelliJ IDEA menganalisa konteks dari kode yang ditulis sehingga dapat memberikan saran penyelesaian pengetikan kode dengan tepat. Selain itu, IntelliJ IDEA mendukung refactoring yang saling terintegrasi yang memudahkan kita untuk meminimalisir kesalahan yang terjadi ketika adanya perubahan dalam proyek yang sedang dikembangkan.
Apache Maven
Apache Maven adalah Java Build Tools yang menggunakan konsep Project Object Model (POM). POM tersebut berisi informasi dan konfigurasi yang digunakan Maven untuk membuat project. Pada dasarnya POM adalah sebuath XML File yang terdapat di dalam project Maven dan di dalam File inilah konfigurasi dari project kita berada.
Lets Coding……
RestClientBuilder builder1 = RestClient.builder(new HttpHost(“localhost”, 9200));
localhost diganti dengan host elastic kamu, dan 9200 sesuai port elastic yang digunakan
Jika elasticsearach kamu menggunakan security (username/password) maka gunakan credential
final CredentialsProvider credentialsProvider1 = new BasicCredentialsProvider(); credentialsProvider1.setCredentials(AuthScope.ANY, new UsernamePasswordCredentials(“username”, “password”)); SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null, (chain, authType) -> true).build(); RestClientBuilder postBuilder = RestClient.builder(new HttpHost(“localhost”, 9200, “https”)).setHttpClientConfigCallback( httpAsyncClientBuilder -> httpAsyncClientBuilder.setDefaultCredentialsProvider(credentialsProvider1).setSSLHostnameVerifier((hostname, session) -> true).setSSLContext(sslContext) ); RestHighLevelClient postclient = new RestHighLevelClient(postBuilder);
Untuk mengatasi request yang terlalu banyak ke elastic maka digunakan scroll untuk mengambil data, dan bulk untuk upload data
Untuk full source code bisa cek disini
Follow instagram,
Email nasriadzlani@live.com