ElasticsearchのデータをJavaで取得する方法
Elasticsearch(ES)データのクエリには、JavaのElasticsearch RESTクライアントまたは Java のElasticsearch High Level クライアントを使用できます。
ElasticsearchのRESTクライアントを使用:
- Elasticsearch RESTクライアントの依存を追加します。たとえば、Mavenを使用して次の依存を追加します。
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-client</artifactId>
<version>7.12.1</version>
</dependency>
- Elasticsearch RESTクライアントインスタンスを作成する
RestClient restClient = RestClient.builder(
new HttpHost("localhost", 9200, "http")).build();
- 検索リクエストを作成して、クエリを実行します。
Request request = new Request("GET", "/your-index/_search");
request.setJsonEntity("{\"query\": {\"match_all\": {}}}");
Response response = restClient.performRequest(request);
- 検索結果の処理:
String responseBody = EntityUtils.toString(response.getEntity());
System.out.println(responseBody);
Elasticsearchクライアントの上級利用:
- Elasticsearchの高位クライアントの依存を追加する。例えば、Mavenを使用する場合、以下の依存を追加する。
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.12.1</version>
</dependency>
- Elasticsearch 高度なクライアント インスタンスを作成する。
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));
- 検索リクエストを作成し、クエリを実行する。
SearchRequest searchRequest = new SearchRequest("your-index");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.query(QueryBuilders.matchAllQuery());
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
- 検索結果の扱い:
SearchHit[] hits = searchResponse.getHits().getHits();
for (SearchHit hit : hits) {
String sourceAsString = hit.getSourceAsString();
System.out.println(sourceAsString);
}
これはESからデータを照会する基本的な例です。ご自身のニーズに合わせて、さらなる照会と結果処理をすることができます。