Elasticsearch Java API迁移表术语术语facetBuilder带有聚合构建器



我从ES 1.7迁移到5.2并重构以下代码。

ES 1.7

public void prepare(final SearchRequestBuilder searchRequestBuilder) {
        final TermsFacetBuilder labelsFacet = FacetBuilders
                .termsFacet("labels")
                .field("labels");
        searchRequestBuilder.addFacet(labelsFacet);
        searchRequestBuilder.setFrom(start);
        searchRequestBuilder.setSize(size);
    }

用ES 5.2

 public void prepare(final SearchRequestBuilder searchRequestBuilder) {
        TermsAggregationBuilder aggregation = AggregationBuilders.terms("labels").field("labels");
        searchRequestBuilder.addAggregation(aggregation);
        searchRequestBuilder.setFrom(start);
        searchRequestBuilder.setSize(size);
    }

当我触发搜索查询时,我会得到以下异常

nested: IllegalArgumentException[Fielddata is disabled on text fields by default. Set fielddata=true on [labels] in order to load fielddata in memory by uninverting the inverted index. Note that this can however use significant memory.]

我还尝试在SearchRequestBuilder上设置FieldDocValue,但没有运气。

根据错误消息,您需要在映射中启用fielddata

例如,这是使用text字段上的fielddata=true的新映射。

PUT my_index/_mapping/my_type
{
  "properties": {
    "my_field": { 
      "type":     "text",
      "fielddata": true
    }
  }
}

最新更新