'highlight of elasticsearch in java?

i need to highlight the match word in a document, in java client. i don't know where to fix highlight object this is my java code for search:

            HighlightBuilder highlightBuilder = new HighlightBuilder().postTags("<highlight>").preTags("</highlight>").field("filename");
            SearchRequest searchRequest = new SearchRequest("userdoc"); 
            SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder(); 
            BoolQueryBuilder queryBuilder = QueryBuilders.boolQuery().must(QueryBuilders.wildcardQuery("filedata",word));
            if(usertype.equals("user"))
            {
                queryBuilder.filter(QueryBuilders.termQuery("email", email));
            }
            searchSourceBuilder.query(queryBuilder);
            searchRequest.source(searchSourceBuilder);
            searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);


Solution 1:[1]

You need to add highlightBuilder to searchSourceBuilder as shown below:

searchSourceBuilder.query(queryBuilder);
searchSourceBuilder.highlighter(highlightBuilder);
searchRequest.source(searchSourceBuilder);

Using below code you can get highlighting as well:

SearchHits hits = searchResponse.getHits();
for (SearchHit hit : hits.getHits()) {
    Map<String, HighlightField> highlightFields = hit.getHighlightFields();
    HighlightField highlight = highlightFields.get("title"); 
    Text[] fragments = highlight.fragments();  
    String fragmentString = fragments[0].string();
}

Please check this documentation for more information about search API.

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1