2

我正在使用 Jest 来查询 Elasticsearch,到目前为止它一直很棒。Jest 的文档说:

结果可以转换为域对象列表;

...并显示此示例:

SearchResult result = client.execute(search);
List<SearchResult.Hit<Article, Void>> hits = searchResult.getHits(Article.class);
// or
List<Article> articles = result.getSourceAsObjectList(Article.class);

getSourceAsObjectList已弃用,我正在使用:

List<SearchResult.Hit<ImmutableConceptDocument, Void>> concepts = result.getHits(ImmutableConceptDocument.class);

... 不可变生成类在哪里ImmutableConceptDocument-否则非常简单的 POJO,其属性命名为我在source搜索结果下看到的。

但是,当我使用上面的行时,我没有得到源属性映射,我得到了其他细节,比如,score等等。typeindex

我错过了什么?域类是否需要具有特定的 Jest 注释或类似的东西?

我在单元测试中也看不到任何好的例子。这个映射到Object.class并且没有向我显示映射示例。

这是不可变的类:

@Value.Immutable
public abstract class EsConceptDocument {
    public abstract String term();
    public abstract Category type();
    public abstract List<String> synonyms();
}

...Category枚举类型在哪里。

4

1 回答 1

1

正如 Val 在评论中指出的那样,这是因为 immutables.io 将生成的类的构造函数设为私有(并公开了一个构造函数)。

我从这个类中删除了 immutable 并编写了一个构造函数和 getter 并且它起作用了。

于 2017-01-11T19:08:21.263 回答