ES集成Springboot
新建项目Springboot
1.
2.
3.项目建立完之后,检查版本信息
4.保证es6规范
注意:如果前面没有勾选依赖支持,那就手动引入下面的依赖
<!--es客户端-->
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
<version>7.6.2</version>
</dependency>
<!--springboot的elasticsearch服务-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
集成代码
1.新建config文件,注入RestHighLevelClient 客户端
@Configuration
public class ElasticSearchClientConfig {
@Bean
public RestHighLevelClient restHighLevelClient(){
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("127.0.0.1",9200,"http"))
);
return client;
}
}
2.测试索引API
@SpringBootTest
class EsApiApplicationTests {
@Autowired
@Qualifier("restHighLevelClient")
public RestHighLevelClient client;
//测试索引的创建
@Test
void testCreateIndex() throws IOException {
//1创建索引请求
CreateIndexRequest request= new CreateIndexRequest("cyx_index");
//2客户端执行请求,请求后获得响应
CreateIndexResponse response = client.indices().create(request, RequestOptions.DEFAULT);
System.out.println(response);
}
//测试索引的是否存在
@Test
void testExistIndex() throws IOException {
GetIndexRequest request= new GetIndexRequest("cyx_index");
boolean exist = client.indices().exists(request, RequestOptions.DEFAULT);
System.out.println(exist);
}
//测试删除索引
@Test
void testDeleteIndex() throws IOException {
DeleteIndexRequest request= new DeleteIndexRequest("test1");
AcknowledgedResponse delete = client.indices().delete(request, RequestOptions.DEFAULT);
System.out.println(delete.isAcknowledged());
}
}
3.测试文档API
//测试添加文档
@Test
void testAddDocument() throws IOException {
//1创建对象
User user=new User("小白",22);
//2创建请求
IndexRequest request=new IndexRequest("bai_index");
//3规则 put /bai_index/_doc/1
request.id("2");
request.timeout(TimeValue.timeValueSeconds(1));
// 等同于上一行代码
// request.timeout("1s");
//4将数据放到json
request.source(JSON.toJSONString(user), XContentType.JSON);
//5客户端发送请求,获取响应结果
IndexResponse response = client.index(request, RequestOptions.DEFAULT);
System.out.println(response.toString());
System.out.println(response.status());
}
//测试文档是否存在
@Test
void testExistDocument() throws IOException {
GetRequest request= new GetRequest("bai_index","2");
boolean exist = client.exists(request, RequestOptions.DEFAULT);
System.out.println(exist);
}
//测试获取文档
@Test
void testGetDocument() throws IOException {
GetRequest request= new GetRequest("bai_index","2");
GetResponse response = client.get(request, RequestOptions.DEFAULT);
System.out.println(response.getSourceAsString());//获得文档的内容
System.out.println(response);//获得全部信息
}
//测试修改文档
@Test
void testUpdateDocument() throws IOException {
UpdateRequest request= new UpdateRequest("bai_index","2");
// 设置时间,超过该时间就不执行了
request.timeout("1s");
User user = new User("小白撑伞", 18);
request.doc(JSON.toJSONString(user),XContentType.JSON);
UpdateResponse response = client.update(request, RequestOptions.DEFAULT);
System.out.println(response);
System.out.println(response.status());
}
//测试删除文档
@Test
void testDeleteDocument() throws IOException {
DeleteRequest request= new DeleteRequest("小白撑伞","2");
request.timeout("1s");
DeleteResponse response = client.delete(request, RequestOptions.DEFAULT);
System.out.println(response.status());
}
//测试添加文档
@Test
void testBulkAddDocument() throws IOException {
BulkRequest request = new BulkRequest();
request.timeout("1s");
ArrayList<User> userlist=new ArrayList<User>();
userlist.add(new User("bai1",5));
userlist.add(new User("bai2",6));
userlist.add(new User("bai3",40));
userlist.add(new User("bai4",25));
userlist.add(new User("bai5",15));
userlist.add(new User("bai6",35));
//批量处理请求 (下面如果不设置id就会随机生成一个id)
for (int i = 0; i < userlist.size(); i++) {
request.add(
new IndexRequest("bai_index")
.id(""+(i+1))
.source(JSON.toJSONString(userlist.get(i)),XContentType.JSON)
);
}
BulkResponse response = client.bulk(request, RequestOptions.DEFAULT);
System.out.println(response.hasFailures());//返回false表示添加成功
}
//测试查询文档
@Test
void testSearchDocument() throws IOException {
SearchRequest request = new SearchRequest("bai_index");
//构建搜索条件
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.highlighter();
TermQueryBuilder termQueryBuilder = QueryBuilders.termQuery("name", "bai1");
sourceBuilder.query(termQueryBuilder);
sourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
request.source(sourceBuilder);
SearchResponse response = client.search(request, RequestOptions.DEFAULT);
System.out.println(JSON.toJSONString(response.getHits()));
System.out.println("=====================");
for (SearchHit documentFields : response.getHits().getHits()) {
System.out.println(documentFields.getSourceAsMap());
}
}
```