当我们发送多个要突出显示的字段时,发送到弹性搜索的请求只有最后添加的字段。
我在Spring-Data-ElasticSearch 3.0.0.RC2和elasticsearch 5.5.0之间的集成中发现了以下问题
问题已经提出,没有解决方案 - elastic search 5.5 highlight field is not working
我在下面阐述了我的发现
多个字段正在以下代码中传递
org.springframework.data.elasticsearch.core.ElasticsearchTemplate
private SearchResponse doSearch(SearchRequestBuilder searchRequest, SearchQuery searchQuery)
{
if (searchQuery.getHighlightFields() != null) {
for (HighlightBuilder.Field highlightField : searchQuery.getHighlightFields()) {
searchRequest.highlighter(new HighlightBuilder().field(highlightField));
}
}
}
org.elasticsearch.action.search.SearchRequestBuilder
public SearchRequestBuilder highlighter(HighlightBuilder highlightBuilder) {
sourceBuilder().highlighter(highlightBuilder);
return this;
}
最后在 org.elasticsearch.search.builder.SearchSourceBuilder 中,只考虑设置的最后一个HighlightBuilder
public SearchSourceBuilder highlighter(HighlightBuilder highlightBuilder) {
this.highlightBuilder = highlightBuilder;
return this;
}
我再次提出了这个问题,因为它让我觉得弹性搜索API无法支持多个高亮字段。我在Spring Data中调试了ElasticSearchTemplate,发现所有突出显示的字段都正确传递。
请告知我调用搜索的方式是否有任何错误。