1. 整合ES客户端
(1) 导入坐标
//低级别不推荐使用
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
//推荐使用(高级别)
<dependency>
<groupId>org.elasticsearch.client</groupId>
<artifactId>elasticsearch-rest-high-level-client</artifactId>
</dependency>
(2) 配置
yml:
//低级别
elasticsearch:
rest:
uris:http://localhost:9200
//高级别不用写配置
(3) 使用
@SpringbootTest
class SpringbootApplicationTest{
// @Autowired
// private ElasticsearchRestTemplate template; //这种客户端不推荐使用(低级别)
//高版本 创建客户端
//由于Spring并未整合高版本,所以不能通过autowired注入
private RestHighLevelClient client;
@Test
void testCreateIndex() throws IOException{
HttpHost host = HttpHost.create("http://localhost:9200");
RestClientBuilder builder = RestClient.builder(host)
client = new RestHightLevelClient(builder);
CreateIndexRequest request = new CreateIndexRequest("books");
client.indices().create(request,RequestOptions.DEFAULT);
client.close();
}
@Test
void testCreateIndexById() throws IOException{
// 设置请求中的参数
String json ="{}"
request.source ("json",XContentType.JSON);
//客户端操作
CreateIndexRequest request = new CreateIndexRequest("books");
//获取操作索引的客户端对象,调用创建索引操作
client.indices().create(request,RequestOptions.DEFAULT);
client.close();
}
//添加文档(单个)
void testCreatorDoc(){
IndexRequest request = new IndexRequest("books").id("1");
String json = "";
request.source(json,XContentType.JSON);
client.index(request,RequestOptions.DEFAULT);
}
//批量添加文档
@Test
void testCreateDocAll() throws IOException{
List<Book> bookList = bookDao.selectList(null);
BulkRequest bulk = new BulkRequest();
for(Book book :bookList){
IndexRequest request = new IndexRequest("books").id(book.getId().toString());
String json = JSON.toJSONString(book);
request.source(json,XContentType.JSON);
bulk.add(request);
}
client.bulk(bulk,RequestOptions.DEFAULT);
}
}
}
2. 查询文档
@Test
//按id查询
void testGet(){
GetRequest request = new GetRequest("books","1");
GetResponse response = client.get(request,RequestOptions.DEFAULT);
String json = response.getSourceAsString();
System.out.println(json);
}
@Test
//按条件查询
void testSearch(){
SearchRequest request = new SearchRequest("books");
SearchSourceBuilder builder = new SearchSourceBuilder();
builder.query(QueryBuilders.termQuery("all","spring"));
request.source(builder);
SearchResponse reponse = client.search(request,RequestOptions.DEFALT);
SearchHits hits = response.getHits();
for ( SearchHit hit : hits){
String source = hit.getSourceAsString();
Book book = JSON.parseObject(source,Book.class);
System.out.println(book);
}
}