创建项目
导入依赖
注意依赖版本和安装的版本一致
<properties><java.version>1.8</java.version><elasticsearch.version>7.6.2</elasticsearch.version></properties>
创建并编写配置类
@Configurationpublic class ElasticSearchConfig {// 注册 rest高级客户端@Beanpublic RestHighLevelClient restHighLevelClient(){RestHighLevelClient client = new RestHighLevelClient(RestClient.builder(new HttpHost("127.0.0.1",9200,"http")));return client;}}
测试
所有测试均在 SpringbootElasticsearchApplicationTests中编写
创建索引
@Testvoid testCreateIndex() throws IOException {//1、创建索引请求CreateIndexRequest request = new CreateIndexRequest("jie-index");//2、客户端执行创建请求 请求后获得响应CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);System.out.println(response);}
判断索引存在
@Testvoid testExistIndex() throws IOException {GetIndexRequest request = new GetIndexRequest("jie-index");boolean exists = client.indices().exists(request, RequestOptions.DEFAULT);System.out.println(exists);}
删除索引
@Testvoid testDeleteIndex() throws IOException {DeleteIndexRequest request = new DeleteIndexRequest("jie-index");AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT);System.out.println(delete);}
添加文档
//测试添加文档@Testvoid testAddDocument() throws IOException {//创建对象User user = new User("蛋黄派", 12);//创建请求IndexRequest request = new IndexRequest("jie-index");//规则 PUT / jie_index/_doc/1request.id("1");request.timeout(TimeValue.timeValueSeconds(1));request.timeout("1s");//将我们的数据放入请求 jsonrequest.source(JSON.toJSONString(user), XContentType.JSON);//客户端发送请求 获取响应结果IndexResponse index = client.index(request, RequestOptions.DEFAULT);System.out.println(index.toString());System.out.println(index.status()); //对应我们命令返回的状态}
获取文档判断是否存在
//测试获取文档,判断是否存在 get /index/doc/1@Testvoid testIsExistDocument() throws IOException {GetRequest request = new GetRequest("jie-index", "1");// 不获取返回的 _source 的上下文request.fetchSourceContext(new FetchSourceContext(false));request.storedFields("_none_");boolean exists = client.exists(request, RequestOptions.DEFAULT);System.out.println(exists);}
获取文档信息
//测试获取文档的信息@Testvoid testGetDocument() throws IOException {GetRequest request = new GetRequest("jie-index", "1");GetResponse response = client.get(request, RequestOptions.DEFAULT);String source = response.getSourceAsString();System.out.println(source);System.out.println(response);}
更新文档信息
//更新文档的信息@Testvoid testUpdateDocument() throws IOException {UpdateRequest request = new UpdateRequest("jie-index", "1");request.timeout("1s");User user = new User("巧克力派", 13);request.doc(JSON.toJSONString(user),XContentType.JSON);UpdateResponse update = client.update(request, RequestOptions.DEFAULT);System.out.println(update.status());System.out.println(update);}
删除文档记录
//删除文档记录@Testvoid testDeleteDocument() throws IOException {DeleteRequest request = new DeleteRequest("jie-index", "1");request.timeout("1s");DeleteResponse delete = client.delete(request, RequestOptions.DEFAULT);System.out.println(delete.status());}
批量插入数据
//特殊的 批量插入数据@Testvoid testBulkRequest() throws IOException {BulkRequest bulkRequest = new BulkRequest();bulkRequest.timeout("1s");ArrayList<User> userList = new ArrayList<>();userList.add(new User("香芋派",11));userList.add(new User("紫薯派",12));userList.add(new User("苹果派",13));userList.add(new User("菠萝派",14));userList.add(new User("榴莲派",15));for (int i = 0; i < userList.size(); i++) {bulkRequest.add(new IndexRequest("jie-index").id(""+(i+1)).source(JSON.toJSONString(userList.get(i)),XContentType.JSON));}BulkResponse bulk = client.bulk(bulkRequest, RequestOptions.DEFAULT);System.out.println(bulk.hasFailures());}
查询
//查询@Testvoid testSearch() throws IOException {SearchRequest searchRequest = new SearchRequest("jie-index");//构建搜素条件SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();//查询条件 可以使用QueryBuilders工具来实现// QueryBuilders.termQuery() 精确// QueryBuilders.matchAllQuery() 匹配所有TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name.keyword", "苹果派"); //中文要使用 keywordsourceBuilder.query(termQueryBuilder);sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));searchRequest.source(sourceBuilder);SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);System.out.println(JSON.toJSONString(searchResponse.getHits()));System.out.println("++++++++++++++++++++++++++++++++++++++++");for (SearchHit documentFields : searchResponse.getHits().getHits()) {System.out.println(documentFields.getSourceAsMap());}}

