ネストでは、私は用語集合を行っています。elasticsearch NEST:bucket.TopHits()を使用せずに直接TopHits結果を取得
また、内部のTopHits集約も行っています。
私の結果は、TopHits()メソッドのおかげで読み取ることができるTopHits値以外のすべての結果情報をレスポンスオブジェクトに与えます。
NEST TopHits()メソッドを使用してaggsに読み込むことなく、結果に直接値を入れたいと思っています。私は弾力的な検索古典的な要求にあるようにすべてのデータを情報にしたいと思います。
私の集約要求:
var response = Client.Search<myclass>(s => s
.Type("type")
.Aggregations(a => a
.Terms("code_bucket", t => t
.Field("field_of_aggregation")
.Size(30)
.Order(TermsOrder.CountAscending)
.Aggregations(a2 => a2
.TopHits("code_bucket_top_hits", th => th.Size(20))
)
)));
を私はTopHits以外のすべてに関する情報にアクセスすることができますウィッヒで結果オブジェクトを受け取り
これは私が実際にやっているものです。
我々は結果を調べる場合、我々はTopHits値がプライベートフィールド「_hits」に格納されて見ることができます:私は結果オブジェクトを文字列化した場合、私はTopHitsの合計数を確認することができ
が、私が見ることができませんフィールド_hits私は文書を見ることができるように:
JavaScriptSerializer js = new JavaScriptSerializer();
string json = js.Serialize(response);
JSONはtopHits結果が含まれていません:
私は値にアクセスすることができますが、私は巣の方法TopHits()を使用する必要があります。
var firstBucket= response.Aggs.Terms("code_bucket");
foreach (var bucket in firstBucket.Buckets)
{
var hits = bucket.TopHits("code_bucket_top_hits");
foreach (var hit in hits.Documents<myclass>())
{
var prop1= hit.prop1;
var prop2= hit.prop2;
}
}
}
をしかし、私は1つで全てに関する情報を持っていることができれば、我々は巣なしelasticsearch要求を行うときに我々が持っているように、それは、本当にusefuleだろう
方法があるかどうか知っていますか?
など、ストリームを返すために、文字列、または
を返すために
を使用することができます:あなたは、各用語のバケット内のドキュメントを入手できますかあなたは 'bucket.TopHits()'でアクセスできる 'top_hits'集約を使っていますか?あなたは 'bucket.TopHits()'を使わずに他の方法でそれらを取得できるかどうか尋ねていますか? –
はい、私はどんなmethodeを使用せずにまたはすべての結果を検索したいと思います。手動でanswereを構築すると便利ではありません、私はelasticsearch要求を行うとき、私はすべての結果データを持っていたいと思います –