最新Java Elasticsearch 7.10教程(五)-高亮查询

一、高亮查询方案

  • 1、直接基于http发送请求
  • 2、基于springboot Repositories
  • 3、基于原生Rest Client(HighRestClient)

推建使用方案2

二、具体实现

1、直接基于http发送请求

参考官方:

Highlighting | Elasticsearch Reference [7.10] | Elastic​www.elastic.co图标

#格式为GET /index名称/_search   _search固定 
# contents为字段名称,kimchy为输入的关键字
GET /bank/_search
{
  "query": {
    "match": { "contents": "kimchy" }
  },
  "highlight": {
    "fields": {
      "contents": {}
    }
  }
}

 

2、基于springboot Repositories

引入@Highlight 注解

    @Highlight(fields = {
            @HighlightField(name = "firstname")
    }, parameters = @HighlightParameters(
            preTags = "<strong>",
            postTags = "</strong>"
    ))
    List<SearchHit<Person>> findByFirstname(String firstname);

Test Case

    /**
     * 高亮显示
     * 使用@Highlight注解
     */
    @Test
    void queryByFirstname() {
        List<SearchHit<Person>> result = personRepository.findByFirstname("hanko");
        result.forEach(res-> {
            Map<String, List<String>> highlightFields = res.getHighlightFields();
            List<String> highlight = highlightFields.get("firstname");
            highlight.forEach(h-> System.out.println(h));
        });
    }

3、基于原生Rest Client(HighRestClient)

    /**
     * 高亮查询
     * @throws IOException
     */
    @Test
    void highlight() throws IOException {

        SearchRequest searchRequest = new SearchRequest("high-index01");

        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.highlighter(highlightBuilder());
        searchSourceBuilder.query(new MatchQueryBuilder("title", "你好"));

        searchRequest.source(searchSourceBuilder);
        SearchResponse searchResponse = restHighLevelClient
               .search(searchRequest, RequestOptions.DEFAULT);
        printHits(searchResponse);
    }

设置高量属性

   private HighlightBuilder highlightBuilder() {
        HighlightBuilder highlightBuilder = new HighlightBuilder();
        HighlightBuilder.Field highlightTitle =
                new HighlightBuilder.Field("title");
        highlightBuilder.field(highlightTitle);
        highlightBuilder.preTags("<font size=\"3\" color=\"red\">");
        highlightBuilder.postTags("</font>");
        return highlightBuilder;
    }

 

源代码仓库:

https://gitee.com/hankzhousandyos/springboot-elasticsearch​gitee.com

最新Java Elasticsearch 7.10教程(汇总)

https://blog.csdn.net/citywu123/article/details/110240244

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

栈江湖

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值