Elasticsearch第3話(SpringBoot集積Elasticsearch)
33550 ワード
ブログを書くのは自分の学習過程を記録するためであり、同じ志を持つ友达と一緒に勉強したいと思っています.文章は書く過程で漏れや間違いが避けられないので、文章の不足点を指摘することを歓迎します.詳細は、コードを叩くのが好きな遊子をクリックして見てください.淵に臨んで魚をうらやましがるより,引き下がって網を結んだほうがましだ.がんばって!
公式ドキュメントJavaApi:https://www.elastic.co/guide/en/elasticsearch/client/index.html
1、インポート依存
バージョンがネイティブバージョンと一致することを保証
2、コアパッケージを認識する
3、初期化
RestHighLevelClientインスタンスでは、以下の方法でRESTアドバンスドクライアントビルダーを構築する必要があります.
クライアントを閉じる
4、構成クラスの作成
5、索引操作
1、索引の作成
2、インデックスがあるかどうかを判断する
3、索引の削除
6、文書の添削
1、文書テストの追加
データをオブジェクトにカプセル化=>リクエストの作成=>ルールの設定=>jsonデータフォーマットに変換=>リクエストの送信
2、ドキュメントの取得
3、文書更新操作
4、ドキュメントの削除
5、量産データ
6、照会
公式ドキュメントJavaApi:https://www.elastic.co/guide/en/elasticsearch/client/index.html
1、インポート依存
バージョンがネイティブバージョンと一致することを保証
<properties>
<java.version>11</java.version>
<elasticsearch.version>7.8.1</elasticsearch.version>
</properties>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
2、コアパッケージを認識する
org.elasticsearch.client:elasticsearch-rest-client
org.elasticsearch:elasticsearch
3、初期化
RestHighLevelClientインスタンスでは、以下の方法でRESTアドバンスドクライアントビルダーを構築する必要があります.
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http"),
new HttpHost("localhost", 9201, "http")));
クライアントを閉じる
cline.close();
4、構成クラスの作成
@Configuration
public class ElasticsearchConfig {
@Bean
public RestHighLevelClient restHighLevelClient() {
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(
new HttpHost("localhost", 9200, "http")));
return client;
}
}
5、索引操作
1、索引の作成
@Test
void contextLoads() throws IOException {
//1、
CreateIndexRequest request = new CreateIndexRequest("yky_index2");
//2、 ==>
CreateIndexResponse createIndexResponse
= restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);
System.out.println(createIndexResponse);
}
2、インデックスがあるかどうかを判断する
// ==>
@Test
void getIndex() throws IOException {
GetIndexRequest request = new GetIndexRequest("yky");
boolean exists = restHighLevelClient.indices().exists(request, RequestOptions.DEFAULT);
System.out.println(exists);
}
3、索引の削除
//
@Test
void deleteIndex() throws IOException{
DeleteIndexRequest request = new DeleteIndexRequest("yky_index");
AcknowledgedResponse delete = restHighLevelClient.indices().delete(request, RequestOptions.DEFAULT);
System.out.println(delete.isAcknowledged());
}
6、文書の添削
1、文書テストの追加
データをオブジェクトにカプセル化=>リクエストの作成=>ルールの設定=>jsonデータフォーマットに変換=>リクエストの送信
//
@Test
void testAddDocument() throws IOException {
//
User user = new User(" ",20);
//
IndexRequest request = new IndexRequest("yky_index");
// put /yky/_doc/id
request.id("1001");
//
request.timeout(TimeValue.timeValueSeconds(1000));
//request.timeout("1s");
// ==> json (fastjson)
request.source(JSON.toJSONString(user), XContentType.JSON);
//
IndexResponse index = restHighLevelClient.index(request, RequestOptions.DEFAULT);
System.out.println(index.toString());
System.out.println(index.status());
}
2、ドキュメントの取得
//
@Test
void testUpdateDocument() throws IOException {
// id
UpdateRequest request = new UpdateRequest("yky_index", "1001");
request.timeout("1s");
User user = new User(" ", 1);
request.doc(JSON.toJSONString(user), XContentType.JSON);
//
UpdateResponse update = restHighLevelClient.update(request, RequestOptions.DEFAULT);
System.out.println(update.toString());
System.out.println(update.status());
}
3、文書更新操作
//
@Test
void testUpdateDocument() throws IOException {
// id
UpdateRequest request = new UpdateRequest(" ", "id");
request.timeout("1s");
User user = new User(" ", 1);
request.doc(JSON.toJSONString(user), XContentType.JSON);
//
UpdateResponse update = restHighLevelClient.update(request, RequestOptions.DEFAULT);
System.out.println(update.toString());
System.out.println(update.status());
}
4、ドキュメントの削除
//
@Test
void testDeleteDocument() throws IOException {
DeleteRequest request = new DeleteRequest("yky_index", "1001");
DeleteResponse delete = restHighLevelClient.delete(request, RequestOptions.DEFAULT);
System.out.println(delete.status());
}
5、量産データ
//
@Test
void testBulkDocument() throws IOException {
BulkRequest bulkRequest = new BulkRequest();
bulkRequest.timeout("10s");
ArrayList<User> list = new ArrayList<>();
//
for (int i = 0; i < list.size(); i++) {
bulkRequest.add(
new IndexRequest("yky_index")
.id(""+(i+1))
.source(JSON.toJSONString(list.get(i)),XContentType.JSON));
}
BulkResponse bulk = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
System.out.println(bulk.hasFailures());
}
6、照会
@Test
//xxx QueryBuilder
void testSearchDocument() throws IOException {
SearchRequest searchRequest = new SearchRequest("yky_index");
//
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
// ===> QueryBuilders
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", " ");
//MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();
sourceBuilder.query(termQueryBuilder);
//
sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
//
searchRequest.source(sourceBuilder);
//
//sourceBuilder.from(1);
//sourceBuilder.size(1);
//
SearchResponse searchResponse = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);
//System.out.println(JSON.toJSONString(searchResponse.getHits()));
System.out.println("===============");
for (SearchHit hit : searchResponse.getHits().getHits()) {
System.out.println(hit.getSourceAsMap());
}