https://www.elastic.co/guide/cn/index.html
意外找到了一个中文版的文档,但是文档比较老了
https://www.elastic.co/guide/en/elasticsearch/client/java-rest/current/index.html
一般使用高级的
1.找到原生的依赖
org.elasticsearch.client elasticsearch-rest-high-level-client7.15.1
2.找对象
3.分析这个类中的方法即可
配置基本的项目
问题:一定要保证我们导入的依赖和我们的es版本一致
可在此指定需要的版本
这里导入3个类,静态内部类,核心类就一个
API测试
@Autowired
@Qualifier("restHighLevelClient")//对应配置里的方法名
private RestHighLevelClient client;
//创建索引
@Test
void createIndex() throws IOException {
//1.创建索引请求
CreateIndexRequest request = new CreateIndexRequest("beibei_index");
//2.执行创建请求 indicesClient请求后获得响应
CreateIndexResponse createIndexResponse = client.indices().create(request, RequestOptions.DEFAULT);
System.out.println(createIndexResponse);
}
//获取索引,判断其是否存在
@Test
void existsIndex() throws IOException {
GetIndexRequest request = new GetIndexRequest("beibei_index");
boolean exists = client.indices().exists(request,RequestOptions.DEFAULT);
System.out.println("exists===="+exists);
GetIndexRequest request2 = new GetIndexRequest("beibei_index2");
boolean exists2 = client.indices().exists(request2,RequestOptions.DEFAULT);
System.out.println("exists2==="+exists2);
}
//删除索引
@Test
void deleteIndex() throws IOException {
DeleteIndexRequest request = new DeleteIndexRequest("beibei_index");
AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT);
System.out.println(delete.isAcknowledged());
}
//新建文档
@Test
void adddocument() throws IOException {
//创建对象
User user = new User("豆豆呀", 2);
//创建请求
IndexRequest request = new IndexRequest("doudou_index1");
//规则PUT /doudou_index1/_doc/1
request.id("1");
//1s
request.timeout(Timevalue.timevalueSeconds(1));
//放入内容
request.source(JSON.toJSONString(user), XContentType.JSON);
//发送请求
IndexResponse indexResponse = client.index(request, RequestOptions.DEFAULT);
System.out.println(indexResponse.toString());
System.out.println(indexResponse.status());//CREATED
}
//判断文档是否存在
@Test
void existsdocument() throws IOException {
GetRequest getRequest = new GetRequest("doudou_index1", "1");
//false 忽略_source上下文
getRequest.fetchSourceContext(new FetchSourceContext(false));
getRequest.storedFields("_none_");
boolean exists = client.exists(getRequest, RequestOptions.DEFAULT);
//true存在
System.out.println(exists);
}
//获取文档信息
@Test
void getdocument() throws IOException {
GetRequest getRequest = new GetRequest("doudou_index1", "1");
GetResponse getResponse = client.get(getRequest,RequestOptions.DEFAULT);
System.out.println(getResponse.getSourceAsString());
System.out.println(getResponse);
}
//更新文档信息
@Test
void updatedocument() throws IOException {
UpdateRequest updateRequest = new UpdateRequest("doudou_index1", "1");
updateRequest.timeout("1s");
User user = new User("豆豆上班班", 3);
updateRequest.doc(JSON.toJSONString(user),XContentType.JSON);
UpdateResponse update = client.update(updateRequest, RequestOptions.DEFAULT);
System.out.println(update);
}
//删除文档信息
@Test
void deletedocument() throws IOException {
DeleteRequest deleteRequest = new DeleteRequest("doudou_index1", "1");
deleteRequest.timeout("1s");
DeleteResponse delete = client.delete(deleteRequest, RequestOptions.DEFAULT);
//若删除的不存在则会result=not_found
System.out.println(delete);
}
//批量插入
@Test
void insertBatchdocument() throws IOException {
BulkRequest bulkRequest = new BulkRequest();
bulkRequest.timeout("10s");
ArrayList users = new ArrayList<>();
users.add(new User("豆豆",2));
users.add(new User("西西",3));
users.add(new User("圆圆",4));
users.add(new User("一一",5));
users.add(new User("开心",3));
for (int i = 0; i < users.size(); i++) {
//组装请求 批量删除 批量更新 就改里面的请求就可以了
bulkRequest.add(new IndexRequest("doudou_index1")
//不写这句也行 会生成随机id
.id(String.valueOf(i))
.source(JSON.toJSONString(users.get(i)),XContentType.JSON));
}
//批量插入
BulkResponse bulk = client.bulk(bulkRequest, RequestOptions.DEFAULT);
System.out.println(bulk);
}
//批量删除
@Test
void deleteBatchdocument() throws IOException {
BulkRequest bulkRequest = new BulkRequest();
bulkRequest.timeout("10s");
for (int i = 0; i <5; i++) {
//组装数据
bulkRequest.add(new DeleteRequest("doudou_index1")
//不写这句也行 会生成随机id
.id(String.valueOf(i)));
}
//批量
BulkResponse bulk = client.bulk(bulkRequest, RequestOptions.DEFAULT);
System.out.println(bulk);
}
//查询
@Test
void search() throws IOException {
SearchRequest searchRequest = new SearchRequest("doudou_index1");
//构建搜索条件
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
//QueryBuilders组装查询条件
//精确查找 QueryBuilders.termQuery
//匹配所有 QueryBuilders.matchAllQuery
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "豆");
//TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("age", 3);
//MatchAllQueryBuilder matchAllQueryBuilder = QueryBuilders.matchAllQuery();
searchSourceBuilder.query(termQueryBuilder);
//分页
searchSourceBuilder.timeout(new Timevalue(10, TimeUnit.SECONDS));
searchRequest.source(searchSourceBuilder);
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
System.out.println(JSON.toJSONString(searchResponse.getHits()));
System.out.println("==================");
for (SearchHit hit : searchResponse.getHits().getHits()) {
System.out.println(hit.getSourceAsMap());
}
}



