Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/336.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多术语搜索嵌套C#_C#_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_Nest - Fatal编程技术网 elasticsearch,nest,C#,elasticsearch,Nest" /> elasticsearch,nest,C#,elasticsearch,Nest" />

多术语搜索嵌套C#

多术语搜索嵌套C#,c#,elasticsearch,nest,C#,elasticsearch,Nest,我希望执行匹配多个值(值数组)的搜索,如下所示: 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 =>

我希望执行匹配多个值(值数组)的搜索,如下所示:

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();
var result1=\u client.Search(s=>s
.Fields(f=>f.trip\u id)
.Query(q=>q
.Terms(t=>t.arg1,value1)).Take(_allData))
.Documents.Select(d=>d.arg2.ToArray();
var result2=\u client.Search(s=>s
.Query(q=>q
.Terms(t=>t.arg3,result1))
.Take(_allData)
).Documents.Select(s=>s.ar3.ToList();
我该怎么办?我在考虑方面,但我不知道如何才能做到这一点。 目前唯一有效的方法是使用
foreach
迭代器,它实际上并不有效


谢谢您的帮助。

您可以这样表达多个查询:

.Query(q=>q.Terms(t=>t.arg3, result1) && q.Terms(t=>t.arg1, value1))
一定要阅读NEST提供的所有好东西。

, 我想用你的解决方案

.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)
                )
                )
            )
        )
    )
    );
var results=client.Search(s=>s
.Query(q=>q
.已筛选(f=>f。
过滤器(b=>b.Bool(m=>m.Must(
t=>t
.术语(p=>p.艺术家,艺术家)
&&期限(p2=>p2.year,year)
)
)
)
)
)
);

谢谢你的回答,但最后我使用了
过滤器DSL
而不是
查询DSL
,它允许我通过:
。和(af=>af.Term(…),af=>af.Term(…)
你能更新上面的URL吗?它当前不可用。t.arg1应为t=>t。arg1@Orelus你应该写下你的评论作为答案,因为这是正确的答案,对我有用。