需求
對(duì)es中的數(shù)據(jù)進(jìn)行全文檢索,并對(duì)返回結(jié)果進(jìn)行高亮顯示欣福。
檢索责球、高亮代碼
代碼
問(wèn)題
用如下這樣的term方式,可以高亮
.setQuery(QueryBuilders.termQuery("PARAM_NAME", "a"))
{
"query": {
"term": {
"body.priority": "error"
}
},
"highlight" : {
"fields" : {
"*" : {}
}
}
}
用如下這樣queryString方式拓劝,高亮無(wú)效
.queryStringQuery("asdf"))
{
"query" : {
"query_string" : {
"query" : "ERROR"
}
},
"highlight" : {
"fields" : {
"*" : {}
}
}
}
解決
增加require_field_match:false雏逾,之后匹配的field設(shè)置為false之后可以高亮了。
{
"query": {
"query_string": {
"query": "test"
}
},
"highlight": {
"require_field_match": false,
"explain": true,
"fields": {
"*": {}
}
}
}
api修改
String query = "{\"query\": {\"query_string\": {\"query\": \"test\"}}}";
SearchRequestBuilder builder = client.prepareSearch("twitter").setTypes("tweet").setQuery(query)
.addHighlightedField("*")
.setHighlighterRequireFieldMatch(false)
.setSize(10);
SearchResponse response = builder.execute().actionGet();
可以highlight代碼
參考
Elasticsearch Reference [2.4] ? Search APIs ? Request Body Search ? Highlighting
Elasticsearch query_string hit field
ElasticSearch highlight showing wrong field