I want to get highlight data in inner hit.
in response, but, highlight in inner hit is null.
did I miss something?
portion of class file:
//-- innerHit's Highlight
HighlightBuilder enHighlightBuilder = new HighlightBuilder();
enHighlightBuilder.field("content_en.text");
//-- innerHit's Source
String[] enIncludes = {"content_en.page", "content_en.text"};
FetchSourceContext enFetchSourceContext = new FetchSourceContext(true, enIncludes, new String[0]);
//-- innerHit setting
InnerHitBuilder enInnerHitBuilder = new InnerHitBuilder();
enInnerHitBuilder.setHighlightBuilder(enHighlightBuilder);
enInnerHitBuilder.setFetchSourceContext(enFetchSourceContext);
//-- final query
BoolQueryBuilder queryBuilder = new BoolQueryBuilder();
queryBuilder.should(
QueryBuilders.nestedQuery(
"content_en"
, QueryBuilders.queryStringQuery(keyword)
.defaultField("content_en.text")
.analyzer("en_analyzer")
, ScoreMode.None
).innerHit(enInnerHitBuilder)
);
sourceBuilder.query(queryBuilder);
SearchRequest searchReq = new SearchRequest();
searchReq.indices(indice);
searchReq.source(sourceBuilder);
//-- response
List<Map<String, Object>> searchResult = new ArrayList<Map<String, Object>>();
SearchResponse response = client.search(searchReq, RequestOptions.DEFAULT);
SearchHits hits = response.getHits();
for (SearchHit hit : hits) {
Map<String, SearchHits> innerHits = hit.getInnerHits();
SearchHits enInnerHits = innerHits.get("content_en");
Map<String, HighlightField> highMap = enInnerHit.getHighlightFields();
}
mapping:
{
"test-doc" : {
"mappings" : {
"properties" : {
"content" : {
"type" : "text"
},
"content_en" : {
"type" : "nested",
"properties" : {
"page" : {
"type" : "integer"
},
"text" : {
"type" : "text",
"analyzer" : "en_analyzer"
}
}
},
"content_lang" : {
"type" : "keyword"
},
"convert_nm" : {
"type" : "keyword"
},
"ext" : {
"type" : "keyword"
},
"file_nm" : {
"type" : "keyword"
},
"file_size" : {
"type" : "long"
},
"upload_date" : {
"type" : "date",
"format" : "[yyyy-MM-dd HH:mm:ss.SSS]"
},
"uploader" : {
"type" : "keyword"
},
"use_yn" : {
"type" : "boolean"
}
}
}
}
}