Elasticsearch全文检索,高亮关键字
问题
用如下这样的term方式,可以高亮
.setQuery(QueryBuilders.termQuery("PARAM_NAME", "a"))
{
"query": {
"term": {
"body.priority": "error"
}
},
"highlight" : {
        "fields" : {
            "*" : {}
        }
    }
}
用如下这样queryString方式,高亮无效
.queryStringQuery("asdf"))
{
      "query" : {
        "query_string" : {
          "query" : "ERROR"
        }
      },
      "highlight" : {
        "fields" : {
          "*" : {}
        }
      }
}
解决
增加require_field_match:false,之后匹配的field设置为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();
作者:水他
链接:http://www.jianshu.com/p/342119123d64
來源:简书
著作权归作者所有。
 
                    
                     
                    
                 
                    
                
 
                
            
         
         浙公网安备 33010602011771号
浙公网安备 33010602011771号