原生java api操作ES數據庫
該部分也只寫了一點點,后面有更簡單的做法,就沒寫完
有需要再繼續寫吧...........參考一下就好了
@SpringBootTest class JavaEsApplicationTests { @Autowired private RestHighLevelClient restHighLevelClient; /** * ES索引數據庫,提供RestAPI * POST 創建 * PUT 修改 * DELETE 刪除 * GET 查詢 */ //創建索引庫 @Test void creteIndex() throws IOException { //先發送一個創建索引庫的請求,test是索引庫的名字 CreateIndexRequest request = new CreateIndexRequest("test"); //通過核心對象創建索引庫 CreateIndexResponse response = restHighLevelClient.indices().create(request, RequestOptions.DEFAULT); //ACK 確認 System.out.println(response.isAcknowledged()); } //判斷索引庫是否存在 @Test void isExists() throws IOException { GetIndexRequest test = new GetIndexRequest("test"); boolean exists = restHighLevelClient.indices().exists(test, RequestOptions.DEFAULT); System.out.println(exists); } //刪除索引庫 @Test void deleteIndex() throws IOException { //發送一個刪除索引庫的請求,test是索引庫的名字 DeleteIndexRequest request = new DeleteIndexRequest("test"); //通過核心對象刪除索引庫 AcknowledgedResponse delete = restHighLevelClient.indices().delete(request, RequestOptions.DEFAULT); System.out.println(delete.isAcknowledged()); } /** * POST /user/stu/1 * { * "uid":1, * "uname":"張三", * "upwd":"123456" * } */ //針對文檔做增刪查改操作 //增加數據 @Test void insertData() throws IOException { //先創建一個User對象 User user = new User(3, "王五", "123456"); //創建IndexRequest請求的對象,並指定索引庫test IndexRequest request = new IndexRequest("test"); //設置類型 //6.8.7版本的ES,如果不指定文檔類型,那么匯報錯:org.elasticsearch.action.ActionRequestValidationException: Validation Failed: 1: type is missing; request.type("std"); //設置id值,如果不指定,則默認給一個UUID request.id("2"); //設置文檔數據源,就是保存的數據,數據格式為JSON //需要導入fastjson包 request.source(JSON.toJSONString(user),XContentType.JSON); //如果出現:java.net.SocketTimeoutException: 30,000 milliseconds timeout on connection http-outgoing-0 [ACTIVE] //如果還是不行就重啟ElasticSearch,就解決了 request.timeout(TimeValue.timeValueSeconds(60)); //開始插入數據 IndexResponse index = restHighLevelClient.index(request, RequestOptions.DEFAULT); System.out.println(index.status().getStatus()); //查看狀態 System.out.println(index.status().name()); //CREATE } //更新數文檔數據 @Test void updateData() throws IOException { //指定要修改的索引庫,類型和id UpdateRequest request = new UpdateRequest("test","std","2"); //設置數據 /** * 我的ES版本的是6.8.7 * 原始:uid:3,uname:王五,wpwd:123456 * (1)只設置user.setUname("趙柳"); ==> 結果:uid:0,uname:趙柳,wpwd:123456 * (2)只設置user.setUname("趙柳");user.setUpwd("79856"); ==> 結果:uid:0,uname:趙柳,wpwd:79856 * (3)只設置user.setUpwd("111111"); ==> 結果:uid:0,uname:王五,wpwd:111111 */ User user = new User(); user.setUpwd("111111"); System.out.println(user); //轉化為JSON格式的數據 request.doc(JSON.toJSONString(user),XContentType.JSON); //更新數據 restHighLevelClient.update(request,RequestOptions.DEFAULT); } //刪除數據 @Test void deleteData() throws IOException { DeleteRequest request = new DeleteRequest("test"); request.type("std"); request.id("2"); DeleteResponse delete = restHighLevelClient.delete(request, RequestOptions.DEFAULT); System.out.println(delete.status().name()); } //但條件查詢+分頁 @Test void search() throws IOException { String keywords = ""; SearchRequest searchRequest = new SearchRequest("test"); SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); MatchAllQueryBuilder query = QueryBuilders.matchAllQuery(); searchSourceBuilder.query(query); searchSourceBuilder.from(0).size(2); searchRequest.source(searchSourceBuilder); SearchResponse search = restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT); SearchHit[] hits = search.getHits().getHits(); // for (SearchHit ) } @Test void contextLoads() { } }