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

ただし、上記の行を使用すると、ソース プロパティがマップされずscoretypeindexなどの他の詳細がマップされます。

私は何が欠けていますか?ドメイン クラスには特定の 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 が生成されたクラスのコンストラクターをプライベートにする (そしてビルダーを公開する) ためです。

このクラスから不変を削除し、コンストラクターとゲッターを作成したところ、機能しました。

于 2017-01-11T19:08:21.263 に答える