1、RestClient 介紹
JavaREST客戶端有兩種模式:
Java Low Level REST Client:ES官方的低級客戶端。低級別的客戶端通過http與Elasticearch集群通信。
Java High Level REST Client:ES官方的高級客戶端。基于上面的低級客戶端,也是通過HTTP與ES集群進行通信。它提供了更多的接口。
此外Spring也對RestClient進行了封裝,本文主要介紹Java High Level REST Client的使用
2、使用RestClient操作索引
2.1創(chuàng)建鏈接
//創(chuàng)建ES連接對象
String esAuth = Base64.encodeBase64String(("test_user" + ":" + "test_user").getBytes());
RestClientBuilder builder = RestClient.builder(new HttpHost("test01.es.58dns.org", 9299, "http"))
.setRequestConfigCallback(requestConfigBuilder -> requestConfigBuilder
.setConnectTimeout(13000)
.setSocketTimeout(15000)
.setConnectionRequestTimeout(15000));
builder.setDefaultHeaders(new BasicHeader[]{new BasicHeader("Authorization", "Basic " + esAuth)});
RestHighLevelClient restHighLevelClient = new RestHighLevelClient(builder);
System.out.println(restHighLevelClient);
2.2創(chuàng)建索引庫
下方代碼僅創(chuàng)建了索引庫,沒有指定映射mapping文章來源:http://www.zghlxwxcb.cn/news/detail-677630.html
可通過request.source(“映射字符串",XContentType.JSON)指定映射字符串文章來源地址http://www.zghlxwxcb.cn/news/detail-677630.html
// 創(chuàng)建索引
CreateIndexRequest createIndexRequest = new CreateIndexRequest("user2");
CreateIndexResponse response = restHighLevelClient.indices().create(createIndexRequest, RequestOptions.DEFAULT);
boolean acknowledged = response.isAcknowledged();
//判斷是否創(chuàng)建索引成功
System.out.println(acknowledged);
2.3 查詢索引信息、判斷索引庫是否存在
//查詢索引
GetIndexRequest getIndexRequest = new GetIndexRequest("user2");
GetIndexResponse getIndexResponse = restHighLevelClient.indices().get(getIndexRequest, RequestOptions.DEFAULT);
System.out.println("getIndexResponse.getAliases() = " + getIndexResponse.getAliases());
System.out.println("getIndexResponse.getMappings() = " + getIndexResponse.getMappings());
System.out.println("getIndexResponse.getSetting() = " + getIndexResponse.getSettings());
//判斷索引是否存在
boolean exists = restHighLevelClient.indices().exists(getIndexRequest, RequestOptions.DEFAULT);
System.out.println("exists = " + exists);
2.4刪除索引,判斷是否刪除成功
//刪除索引
DeleteIndexRequest deleteIndexRequest = new DeleteIndexRequest("user2");
AcknowledgedResponse delete = restHighLevelClient.indices().delete(deleteIndexRequest, RequestOptions.DEFAULT);
//判斷是否刪除成功
System.out.println("delete.isAcknowledged() = " + delete.isAcknowledged());
3、進行文檔操作
//新增數(shù)據(jù)
User user = new User();
user.setName("小李");
user.setAge(12);
user.setPassword("123321");
//轉化為json串
ObjectMapper objectMapper = new ObjectMapper();
String userString = objectMapper.writeValueAsString(user);
//創(chuàng)建請求
IndexRequest indexRequest = new IndexRequest();
//指定索引庫名稱和id
indexRequest.index("user").id("1");
//指定索引類型
indexRequest.type("_doc");
//指定要添加的內容
indexRequest.source(userString, XContentType.JSON);
IndexResponse index = restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);
System.out.println("index.getId() = " + index.getId());
//查詢文檔
GetRequest getIndexRequest1 = new GetRequest();
getIndexRequest1.index("user").id("1");
GetResponse getIndexResponse1 = restHighLevelClient.get(getIndexRequest1,RequestOptions.DEFAULT);
String sourceAsString = getIndexResponse1.getSourceAsString();
System.out.println("sourceAsString = " + sourceAsString);
//修改文檔
UpdateRequest updateRequest = new UpdateRequest();
updateRequest.index("user").id("1");
updateRequest.doc("name","129212","age",20);
updateRequest.type("_doc");
UpdateResponse update = restHighLevelClient.update(updateRequest, RequestOptions.DEFAULT);
System.out.println("update.getGetResult() = " + update.getGetResult());
//再次查詢文檔
GetRequest getIndexRequest2 = new GetRequest();
getIndexRequest2.index("user").id("1");
getIndexRequest2.type("_doc");
GetResponse getIndexResponse2 = restHighLevelClient.get(getIndexRequest2,RequestOptions.DEFAULT);
String sourceAsString2 = getIndexResponse2.getSourceAsString();
System.out.println("sourceAsString2 = " + sourceAsString2);
//刪除文檔
DeleteRequest deleteRequest1 = new DeleteRequest();
deleteRequest1.index("user").id("1");
restHighLevelClient.delete(deleteRequest1,RequestOptions.DEFAULT);
到了這里,關于Elasticsearch學習3-使用RestClient操作es的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!