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

本文关键字:Elasticsearch 搜索 查询 添加 NEST 客户端 过滤器 使用 | 更新日期: 2023-09-27 18:35:52

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

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)))));

请提前帮我谢谢!

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

使用MatchPhrase方法

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

此外,您可以使用QueryRaw方法将查询作为字符串运行

QueryRaw(queryString);