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 回答