elasticSearch在spring中的简单使用

 引入依赖 

 <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);
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值