elasticsearch 查询 - 查询条件高亮显示
方式1 restful api
POST http://192.168.199.126:9200/film/dongzuo/_search/
{
"query": {
"match": {
"title": "星球"
}
},
"_source": {
"include": [
"title",
"price"
]
},
"highlight": {
"fields": {
"title": {}
}
}
}

方式2 Java接口实现
部分代码
private TransportClient client;
private static String host="192.168.199.126";
private static int port=9300; // 程序连接的端口
// 配置settings 集群相关
private static Settings.Builder settings = Settings.builder().put("cluster.name","my-application");
@Before
public void init() throws UnknownHostException {
client = new PreBuiltTransportClient(settings.build())
.addTransportAddress(new TransportAddress(InetAddress.getByName(host), port));
}
@After
public void close(){
if(client!=null){
client.close();
}
}
/**
* 条件查询高亮实现
* @throws Exception
*/
@Test
public void searchHighlight()throws Exception{
SearchRequestBuilder srb=client.prepareSearch("film").setTypes("dongzuo");
HighlightBuilder highlightBuilder=new HighlightBuilder();
highlightBuilder.preTags("<h2>");// 关键字之前添加
highlightBuilder.postTags("</h2>");// 关键字之后添加
highlightBuilder.field("title"); // 设置要添加格式的字段
SearchResponse sr=srb.setQuery(QueryBuilders.matchQuery("title", "星球"))
.highlighter(highlightBuilder)// 设置关键字显示格式
.setFetchSource(new String[]{"title","price"}, null)
.execute()
.actionGet();
SearchHits hits=sr.getHits();
for(SearchHit hit:hits){
System.out.println(hit.getSourceAsString());
System.out.println(hit.getHighlightFields());// 获取带有设置了格式的数据
}
}
