2016-08-29 5 views
0

私は、条件付きリストをループしてそれを累積することによって、弾性NEST APIを通して任意の数のブール条件を提供する良い方法を探していますNEST APIクエリ呼び出しに含めるための1つのブール条件です。ブール条件の任意のリストをネストクエリに組み込む

以下は、私がこれを使っていくところの不完全なコードサンプルですが、流暢なインターフェースに巻き込まれています。

この例は、説明のために作成された架空のホテルドキュメントの例に基づいています。

上記は私の最初の擬似コードアプローチですが、私は提案をすることができます。

実際の弾性指数には、http://localhost:9200/my-index/hotel/_mappingのようなホテルのマッピングがあります。

答えて

2

クエリーコンテナを宣言します。そして、あなたのクエリを追加

List<QueryContainer> lst = new List<QueryContainer>(); 

lst.Add(Query<xxx>.Term(t => t.Field(f => f.zipCode).Value(zip))); 

最後に、完全なクエリを実行します。

  ISearchResponse<xxx> results = elastic.Search<xxx>(s => s 
       .Query(q => q 
        .ConstantScore(cs => cs 
         .Filter(ff => ff 
          .Bool(b => b.Must(lst.ToArray()))))) 

あなたは、あなたのニーズに合わせて微調整することができますが、それは基本的なジストです。最後の行には、クエリコンテナを渡すToArray()呼び出しがあることに注意してください。

+0

@SledgeHammerありがとうございます。このソリューションは非常にうまく動作します。それは私が弾力のあるNEST APIを目指していた曲げよりもずっと簡単です。 –

関連する問題