@Autowired
private RestHighLevelClient restHighLevelClient;
//创建索引
@Test
public void testCreateIndex() throws IOException {
CreateIndexRequest createIndexRequest = new CreateIndexRequest("jlr");
IndicesClient indicesClient = restHighLevelClient.indices();
CreateIndexResponse create = indicesClient.create(createIndexRequest, RequestOptions.DEFAULT);
}
//获取索引
@Test
public void testExistIndex() throws IOException {
GetIndexRequest getIndexRequest = new GetIndexRequest("jlr");
IndicesClient indicesClient = restHighLevelClient.indices();
boolean b = indicesClient.exists(getIndexRequest,RequestOptions.DEFAULT);
System.out.println(b);
}
//添加文档
@Test
public void testCreateDocument() throws IOException {
User user = new User("张三1",19);
//创建请求
IndexRequest indexRequest = new IndexRequest("jlr");
indexRequest.id("2");
indexRequest.timeout("1s");//这种请求超时时间
//将数据转成json放入请求 中
indexRequest.source(JSON.toJSONString(user), XContentType.JSON);
//执行请求
IndexResponse index = restHighLevelClient.index(indexRequest, RequestOptions.DEFAULT);
System.out.println(index.toString());
System.out.println(index.status());
}
//获取文档
@Test
public void testGetDocument() throws IOException {
//创建请求
GetRequest getRequest = new GetRequest("jlr","1");
//执行请求
GetResponse document = restHighLevelClient.get(getRequest,RequestOptions.DEFAULT);
//{"_index":"jlr","_type":"_doc","_id":"1","_version":1,"_seq_no":0,"_primary_term":1,"found":true,"_source":{"age":19,"name":"张三"}}
System.out.println(document.toString());
//获得一个Map{name=张三, age=19} 我们上面testCreateDocument方法存的值
System.out.println(document.getSourceAsMap());
//获取指定的Key对应的val
Object name = document.getSource().get("name");
System.out.println(name);
}
//更新文档
@Test
public void testUpdateDocument() throws IOException {
//创建一个Update请求
UpdateRequest updateRequest = new UpdateRequest("jlr","1");
updateRequest.timeout("1s");//设置超时时间为1s
User user = new User("李四",22);
//上面创建文档我们要把POJO类转成json更新肯定也是要的
updateRequest.doc(JSON.toJSONString(user),XContentType.JSON);
//执行更新操作
UpdateResponse update = restHighLevelClient.update(updateRequest, RequestOptions.DEFAULT);
System.out.println(update.status());// ok
}
//删除文档
@Test
public void testDeleteDocument() throws IOException {
//创建一个请求
DeleteRequest deleteRequest = new DeleteRequest("jlr","11");
deleteRequest.timeout("1s");//设置超时时间为1s
//执行删除操作操作
DeleteResponse delete = restHighLevelClient.delete(deleteRequest, RequestOptions.DEFAULT);
System.out.println(delete.status());// 删除成功: ok 失败:NOT_FOUND
}
//批量添加文档 项目真实场景
@Test
public void testBulkRequest() throws IOException {
//创建一个批量操作的请求
BulkRequest bulkRequest = new BulkRequest();
bulkRequest.timeout("100s");//设置超时时间为100s
//创建批量数据
List<User> userList = new ArrayList<>();
userList.add(new User("sb1",1));
userList.add(new User("sb2",2));
userList.add(new User("sb3",3));
userList.add(new User("sb4",4));
userList.add(new User("sb5",5));
userList.add(new User("sb6",6));
userList.add(new User("sb7",7));
userList.add(new User("sb8",8));
for (int i=0; i < userList.size(); i++) {
//这个个ADD方法里的参数可以是DeleteRequest ,UpdateRequest 增删改的请求
bulkRequest.add(new IndexRequest("jlr")
.id(""+(i+10))//不设置id就是随机id类似于UUID
.source(JSON.toJSONString(userList.get(i)), XContentType.JSON));
}
//执行批量请求
BulkResponse bulk = restHighLevelClient.bulk(bulkRequest, RequestOptions.DEFAULT);
System.out.println(!bulk.hasFailures());//bulk.hasFailures返回false成功
}
//查询
//SearchSourceBuilder 构建搜索
//HighlightBuilder 构建高亮
//MatchAllQueryBuilder 构建匹配所有
//TermQueryBuilder 构建匹配
@Test
public void testSearch() throws IOException {
//创建查询请求并指定索引
SearchRequest serach = new SearchRequest("jlr");
//构建搜索条件
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
HighlightBuilder highlightBuilder= new HighlightBuilder();
//searchSourceBuilder.highlighter()//设置高亮
//查询条件可以用 QueryBuilder工具类实现
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "sb1");//精确查询(属性,筛选的值)
//MatchAllQueryBuilder matchAllQueryBuildermatchAllQueryBuilder = QueryBuilders.matchAllQuery();//匹配所有
//搜索条件放入精确查找构造
searchSourceBuilder.query(termQueryBuilder);
serach.source(searchSourceBuilder);
//执行
SearchResponse search = restHighLevelClient.search(serach, RequestOptions.DEFAULT);
System.out.println(JSON.toJSONString(search.getHits()));
SearchHit[] hits = search.getHits().getHits();
for(SearchHit item: hits) {
Map<String, Object> sourceAsMap = item.getSourceAsMap();
System.out.println(sourceAsMap);
}
}