1. 实例化
-
代码
@Configuration public class ElasticSearchClientConfig { @Bean public RestHighLevelClient restHighLevelClient(){ RestHighLevelClient client = new RestHighLevelClient( RestClient.builder(new HttpHost("localhost", 9200, "http")) ); return client; } }
2. 索引
-
创建索引
class DemoApplicationTests { @Autowired @Qualifier("restHighLevelClient") private RestHighLevelClient client; // 创建索引 @Test public void testCreateIndex() throws IOException { CreateIndexRequest request = new CreateIndexRequest("test1"); CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT); System.out.println(response); } }
-
判断索引是否存在
// 判断索引是否存在 @Test public void testIsExistIndex() throws IOException { GetIndexRequest request = new GetIndexRequest("test1"); boolean exists = client.indices().exists(request, RequestOptions.DEFAULT); if (exists) { System.out.println("已存在"); } else { System.out.println("不存在"); } }
-
删除索引
@Test public void testDeleteIndex() throws IOException { DeleteIndexRequest request = new DeleteIndexRequest("test1"); AcknowledgedResponse response = client.indices().delete(request, RequestOptions.DEFAULT); System.out.println(response); }
3. 文档
-
添加文档
@Test public void testCreateDocument() throws IOException { User user = new User("张三", 12, "男"); // 指定索引 IndexRequest request = new IndexRequest("test1"); // 指定id request.id("8"); // 设置超时时间 // request.timeout("1s"); request.timeout(TimeValue.timeValueSeconds(1)); // 将我们的数据放入请求 request.source(JSON.toJSONString(user), XContentType.JSON); // 客户端发送请求 IndexResponse response = client.index(request, RequestOptions.DEFAULT); System.out.println(response.toString()); System.out.println(response.status()); }
-
查看文档
@Test public void testGetDocument() throws IOException { GetRequest request = new GetRequest("test1", "7"); GetResponse response = client.get(request, RequestOptions.DEFAULT); System.out.println(JSON.toJSON(response)); System.out.println(response.toString()); }
-
修改文档
@Test public void testUpdateDocument() throws IOException { UpdateRequest request = new UpdateRequest("test1", "7"); request.timeout("1s"); User user = new User("李四", 22, "女"); request.doc(JSON.toJSONString(user), XContentType.JSON); UpdateResponse response = client.update(request, RequestOptions.DEFAULT); System.out.println(response.toString()); System.out.println(response.status()); }
-
删除文档
@Test public void testDeleteDocument() throws IOException { DeleteRequest request = new DeleteRequest("test1", "7"); request.timeout("1s"); DeleteResponse response = client.delete(request, RequestOptions.DEFAULT); System.out.println(response.status()); System.out.println(response.toString()); }
-
批量添加文档
@Test public void testBulkCreateDocument() throws IOException { BulkRequest bulkRequest = new BulkRequest(); bulkRequest.timeout("10s"); ArrayList<User> userList = new ArrayList<>(); userList.add(new User("用户1", 11, "男")); userList.add(new User("用户2", 12, "男")); userList.add(new User("用户3", 13, "男")); userList.add(new User("用户4", 14, "男")); userList.add(new User("用户5", 15, "男")); userList.add(new User("用户6", 16, "男")); for (int i = 0; i < userList.size(); i++) { bulkRequest.add( new IndexRequest("test1") .id(i + 1 + "") .source(JSON.toJSONString(userList.get(i)), XContentType.JSON) ); } BulkResponse response = client.bulk(bulkRequest, RequestOptions.DEFAULT); System.out.println(response.status()); System.out.println(response.toString()); }
-
批量删除文档
@Test public void testBulkDeleteDocument() throws IOException { BulkRequest bulkRequest = new BulkRequest(); bulkRequest.timeout("10s"); List<String> idList = Arrays.asList("1", "3"); for (int i = 0; i < idList.size(); i++) { bulkRequest.add( new DeleteRequest("test1").id(idList.get(i)) ); } BulkResponse response = client.bulk(bulkRequest, RequestOptions.DEFAULT); System.out.println(response.status()); System.out.println(response.toString()); }
-
搜索
@Test public void testSearch() throws IOException { SearchRequest searchRequest = new SearchRequest("test1"); // 构建搜索条件 SearchSourceBuilder sourceBuilder = new SearchSourceBuilder(); // 构建查询条件, 我们可以使用queryBuilders工具来实现 // termQuery: 精确匹配 // matchAllQuery: 匹配所有 TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("age", "12"); sourceBuilder.query(termQueryBuilder); sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS)); searchRequest.source(sourceBuilder); SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT); System.out.println(searchResponse.getHits()); System.out.println(JSON.toJSONString(searchResponse.getHits())); for (SearchHit documentFields: searchResponse.getHits().getHits()) { System.out.println(documentFields.getSourceAsMap()); } }