引入依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-elasticsearch</artifactId>
</dependency>
配置yaml
spring:
elasticsearch:
rest:
uris: http://47.96.11.185:9200
@SpringBootTest
class ElasticSearchdemo1ApplicationTests {
@Resource
private RestHighLevelClient restHighLevelClient;
@Autowired
private ObjectMapper objectMapper;
@Test
// 添加索引
void testCreateIndex() throws IOException {
CreateIndexRequest request = new CreateIndexRequest("index5");
CreateIndexResponse response = restHighLevelClient.indices().create(request, RequestOptions.DEFAULT);
System.out.println("response = " + response);
}
@Test
// 删除索引
public void testDeleteIndex() throws IOException {
DeleteIndexRequest request = new DeleteIndexRequest("index5");
AcknowledgedResponse response = restHighLevelClient.indices().delete(request, RequestOptions.DEFAULT);
System.out.println("response = " + response);
}
@Test
// 添加索引下的数据
public void testCreateDocument() throws IOException {
Book book = new Book(1,"平凡世界","路遥",new Date().getTime()+"");
String jsonStr = objectMapper.writeValueAsString(book);
IndexRequest request = new IndexRequest("index5");
request.id("1");
request.source(jsonStr, XContentType.JSON);
IndexResponse indexResponse = restHighLevelClient.index(request, RequestOptions.DEFAULT);
System.out.println("indexResponse = " + indexResponse);
}
@Test
//搜索
public void testSearch() throws IOException {
SearchRequest request = new SearchRequest("index4");
SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
searchSourceBuilder.from(0);
searchSourceBuilder.size(10);
// searchSourceBuilder.query(QueryBuilders.matchAllQuery());
// searchSourceBuilder.query(QueryBuilders.matchQuery("bookName","Java"));
// 查询条件的封装
searchSourceBuilder.query(QueryBuilders.multiMatchQuery("Java","bookName","author"));
// 高亮显示
HighlightBuilder highlightBuilder = new HighlightBuilder();;
HighlightBuilder.Field title = new HighlightBuilder.Field("bookName");
title.highlighterType("unified");
highlightBuilder.field(title);
highlightBuilder.preTags("<label style='color:red'>");
highlightBuilder.postTags("</label>");
searchSourceBuilder.highlighter(highlightBuilder);
request.source(searchSourceBuilder);
SearchResponse searchResponse = restHighLevelClient.search(request, RequestOptions.DEFAULT);
SearchHits hits = searchResponse.getHits();
// 返回数据的封装
Iterator<SearchHit> iterator = hits.iterator();
ArrayList<Book> books = new ArrayList<>();
while (iterator.hasNext()){
SearchHit next = iterator.next();
String sourceAsString = next.getSourceAsString();
Book book = objectMapper.readValue(sourceAsString, Book.class);
HighlightField bookName = next.getHighlightFields().get("bookName");
if (bookName != null){
String s = Arrays.toString(bookName.getFragments());
book.setBookName(s);
}
books.add(book);
}
System.out.println("books = " + books);
}
}