弹性搜索突出显示多个字段问题

时间:2017-10-27 22:27:51

标签: elasticsearch spring-data-elasticsearch

当我们发送多个要突出显示的字段时,发送到弹性搜索的请求只有最后添加的字段。

我在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,发现所有突出显示的字段都正确传递。

请告知我调用搜索的方式是否有任何错误。

0 个答案:

没有答案