使用NEST客户端将过滤器添加到elasticsearch中的搜索查询中

时间:2016-02-23 10:42:14

标签: c# elasticsearch nest

这是我对过滤查询的获取请求

GET  demosearch/_search
{
   "query": {
       "filtered": {
          "query": {
          "match_phrase": {
             "material": "shirt"
          }
          },
          "filter": {
              "term": {
                 "colorId":"31"
              }
          }
       } 
   }
}

现在我需要使用嵌套客户端在c#中编写此查询我尝试了类似这样的东西,但它不适合我

var res1=client.Search<nextDocument>(s=>s.Analyzer("automplete")
                .From(0).Size(20)
                     .Query(f=>f.Filtered(c=>c
                         .Query(v=>v.MatchAll())
                         .Filter(b=>b.
                             Term(l=>l.CategoryId)))));

请提前帮助我!谢谢。

1 个答案:

答案 0 :(得分:1)

使用MatchPhrase方法

.Query(q => 
    q.MatchPhrase(m =>
        m.OnField(f => f.Material)
            .Lenient()
            .Query("shirt"))  
    && q.Term(t => t.ColorId, 31)));

此外,您可以使用QueryRaw方法

将查询作为字符串运行
QueryRaw(queryString);