0
私はElasticSearch用のJava APIを使用しています。フィールドを強調表示しようとしていますが、機能していません。検索語句と一致する正しい結果が返されているため、強調表示するコンテンツがありますが、単純には行いません。私はフィールドが強調表示されているかを確認し、Java Elastic Search:ハイライターが動作しない
QueryBuilder matchQuery = simpleQueryStringQuery(searchTerm);
...
HighlightBuilder highlightBuilder = new HighlightBuilder()
.postTags("<highlight>")
.preTags("</highlight>")
.field("description");
SearchResponse response = client.prepareSearch("mediaitems")
.setTypes("mediaitem")
.setSearchType(SearchType.DFS_QUERY_THEN_FETCH)
.setQuery(matchQuery) // Query
.setFrom(from)
.setSize(pageSize)
.setExplain(true)
.highlighter(highlightBuilder)
.get();
と私のJSON-> POJOコードではなく、返された地図は空です:私はこのように私のSearchResponseとHighlightBuilderを設定します。
Arrays.stream(hits).forEach((SearchHit hit) -> {
String source = hit.getSourceAsString();
Map<String, HighlightField> highlightFields = hit.getHighlightFields();
try {
MediaItem mediaItem = objectMapper.readValue(source, MediaItem.class);
mediaItemList.add(mediaItem);
} catch (IOException e) {
e.printStackTrace();
}
});
強調表示のリクエストが無視されるのはなぜですか?
ご協力いただきまして誠にありがとうございます。
QueryBuilderでHighlightBuilderを使用する場所がありません。 https://github.com/elastic/elasticsearch/blob/master/core/src/main/java/org/elasticsearch/index/query/QueryBuilder.java –
はい、あなたは正しい - あなたは私を誤解しました。私のasnwerを編集するつもりです。 – Ansaldos