8

次のように、複数の値 (値の配列) に一致する検索を実行したい:

var result1 = _client.Search<type1>(s => s
            .Fields(f => f.trip_id)
            .Query(q => q
                .Terms(t => t.arg1, value1)).Take(_allData))
                .Documents.Select(d => d.arg2).ToArray();

var result2 = _client.Search<type2>(s => s
                      .Query(q => q
                          .Terms(t => t.arg3, result1))
                          .Take(_allData)
                          ).Documents.Select(s => s.ar3).ToList();

どのようにできるのか ?ファセットについて考えていましたが、どうすればできるのかわかりません。今のところ機能する唯一の方法は、foreach実際には効果的ではないイテレータを使用することです...

ご協力いただきありがとうございます。

4

2 に答える 2

5

次のように複数のクエリを表現できます。

.Query(q=>q.Terms(t=>t.arg3, result1) && q.Terms(t=>t.arg1, value1))

クエリの作成に関するドキュメントを必ず読んで、NEST が提供するすべての優れた機能を見つけてください。

于 2013-10-14T12:45:14.430 に答える
0

Orelus さん、あなたのソリューションを

.And( af=>af.Term(...), af=>af.Term(...) )

これがどこに当てはまるのかわかりません。これは、機能しないフィルターの例です

var results = client.Search<music>(s => s
    .Query(q => q
        .Filtered(f => f.
            Filter(b => b.Bool(m => m.Must(
                t => t
                    .Term(p => p.artist, artist)
                     && t.Term(p2 => p2.year, year)
                )
                )
            )
        )
    )
    );
于 2015-12-11T00:49:49.207 に答える