Java连接Elasticsearch6.xxx 代码高亮显示篇四

1、代码高亮显示
       /***
		* 测试代码高亮显示 
		* @throws Exception
		*/
	    @Test
        public void heightCode() throws Exception{
	
		//1、获取客户端连接
    	TransportClient client = ESTools.getTransportClient();
    	
    	
    	//2、代码高亮设置
    	HighlightBuilder highlightBuilder=new HighlightBuilder();
	    highlightBuilder.preTags("<code>");
	    highlightBuilder.postTags("</code>");
    	
	    highlightBuilder.field("name");
	    
    	//3、构造查询条件:matchQuery
    	QueryBuilder builder = QueryBuilders.matchQuery("name","java开发");
    			
    	
    	//4、执行查询
    	SearchResponse response = client.prepareSearch("book").setQuery(builder)
    			.highlighter(highlightBuilder)  //加入代码高亮
    			.setFetchSource(new String[]{"name","studymodel"}, null) //过滤源字段
    			.get();
    	
    	//返回查询结果
    	SearchHits hits = response.getHits();
    	
    	for (SearchHit searchHit : hits) {
    		
    		System.out.println(searchHit.getSourceAsString());
    		System.out.println(searchHit.getHighlightFields()); //输出代码高亮片段
    		
		}
    	
    	//关闭客户端
    	client.close();
	}
{"studymodel":"2020","name":"Bootstrap开发框架"}
{name=[name], fragments[[Bootstrap<code></code><code></code>框架]]}
{"studymodel":2018,"name":"spring开发框架"}
{name=[name], fragments[[spring<code></code><code></code>框架]]}
{"studymodel":2020,"name":"java实战"}
{name=[name], fragments[[<code>java</code>实战]]}
{"studymodel":2020,"name":"java实战001"}
{name=[name], fragments[[<code>java</code>实战001]]}
2、实战:获取高亮以及最佳片段信息代码实现
        /***
		* 高亮显示 
		* @throws Exception
		*/
	    @Test
        public void heightCode() throws Exception{
	
		//1、获取客户端连接
    	TransportClient client = ESTools.getTransportClient();
    	
    
    	//2、代码高亮设置
    	HighlightBuilder highlightBuilder=new HighlightBuilder();
	    highlightBuilder.preTags("<span style='color:red'>");
	    highlightBuilder.postTags("</span>");
	    highlightBuilder.field("name");
	    
    	//3、构造查询条件:matchQuery
    	QueryBuilder builder = QueryBuilders.matchQuery("name","java开发");
    			
    	
    	//4、执行查询
    	SearchResponse response = client.prepareSearch("book").setQuery(builder)
    			.highlighter(highlightBuilder)  //加入代码高亮
    			.setFetchSource(new String[]{"name","studymodel"}, null) //过滤源字段
    			.get();
    	
    	//返回查询结果
    	SearchHits hits = response.getHits();
    	//匹配到的总记录数
        long totalHits = hits.getTotalHits();
        System.out.println("记录数=="+totalHits);
        
        List<UIndex> list = new ArrayList<>();
        
        //得到匹配度高的文档
        SearchHit[] searchHits = hits.getHits();
    	for (SearchHit hit : searchHits) {
    	
    		UIndex u = new UIndex();
    		
    		 //源文档内容
            Map<String, Object> sourceAsMap = hit.getSourceAsMap();
            //System.out.println(sourceAsMap);
            String id = (String) sourceAsMap.get("id");
            String name = (String) sourceAsMap.get("name");
            
            HighlightField highlightField = hit.getHighlightFields().get("name");
            System.out.println(highlightField);
            if(highlightField==null){
            	u.setName(name);
            }else{
                u.setName(hit.getHighlightFields().get("name").fragments()[0].toString());
            }
            u.setId(id);
            
            //添加至map
            list.add(u);
           
    		
		}
    	System.out.println(list);
    	//关闭客户端
    	client.close();
	}
完整四篇实列代码,可根据需求,整合到SSM中,实现ES搜索引擎。
  • 后续还会有Spring Boot整合ES的实战文章,请关注…
  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

DT辰白

你的鼓励是我创作的源泉

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

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

打赏作者

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

抵扣说明:

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

余额充值