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

adding filters into the search query in elasticsearch using NEST client

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

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

现在我需要使用 Nest 客户端在 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)))));

请帮助我提前谢谢!

使用MatchPhrase方法

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

此外,您可以使用 QueryRaw 方法

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