springdata elasticSearch 查询高亮显示

postman 中请求 :http://localhost:9200/document/_search

用post 请求:

{
	"query":{
		"multi_match":{
			 "query": "朗逸",
    		 "fields": ["desc"]
		}
	},
	
	"from": 0, 
	"size": 100,
	"sort": [
		{"craetetime":"asc"}
    ],
	"highlight": { 
			"require_field_match": false, 
			"fields": { 
				"title": { "pre_tags": [ "<font color='red'>" ], "post_tags": [ "</font>" ]} ,
				"desc": { "pre_tags": [ "<font color='red'>" ], "post_tags": [ "</font>" ]}
				}
		}
}

返回结果

 

springdata 操作elasticserach

//高亮显示
	@Test
	public void documentHigh(){
		Pageable pageable= PageRequest.of(0,2);
		String preTag = "<font color='#dd4b39'>";//google的色值
		String postTag = "</font>";
		SearchQuery searchQuery=new NativeSearchQueryBuilder().
				withQuery(QueryBuilders.matchQuery("desc","朗逸")).
				withHighlightFields(new HighlightBuilder.Field("desc").preTags(preTag).postTags(postTag))
				.build();
		searchQuery.setPageable(pageable);

		Page<esDocument> esDocuments=elasticsearchTemplate.queryForPage(searchQuery, esDocument.class, new SearchResultMapper() {
			@Override
			public <T> AggregatedPage<T> mapResults(SearchResponse response, Class<T> aClass, Pageable pageable) {
				List<esDocument> chunk = new ArrayList<>();
				for (SearchHit searchHit : response.getHits()) {
					if (response.getHits().getHits().length <= 0) {
						return null;
					}
					esDocument esDocument=new esDocument();
					//name or memoe
					HighlightField itemTitle = searchHit.getHighlightFields().get("desc");
					if (itemTitle != null) {
						esDocument.setDesc(itemTitle.fragments()[0].toString());
					}
					esDocument.setCar(String.valueOf(searchHit.getSource().get("car")));
					System.out.println(String.valueOf(searchHit.getSource().get("car"))+"----");
					chunk.add(esDocument);
				}
				if (chunk.size() > 0) {
					return new AggregatedPageImpl<>((List<T>) chunk);
				}
				return null;
			}
		});
		for(esDocument e:esDocuments){
			System.out.println(e.getDesc());
		}
	}

 

查询结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值