小编Mah*_*hsa的帖子

Nest Elasticsearch,结合了Must和Should的bool查询

我想按年份,格式和内容过滤一组文档.

n伪SQL:

SELECT * FROM /test/document
WHERE 
((format=f1|| format=f2||...|| format=fn) AND 
(Year!=2013 AND Year!=2015) AND 
(content like %c1% || content like %c2% ||...|| content like %cn%))
Run Code Online (Sandbox Code Playgroud)

如您所见,格式和内容项的数量是动态的,将由用户选择.到目前为止,我想出了如何分别对每个字段进行动态查询,然后使用bool查询将它们组合起来,如下面的代码所示;

// For YEAR
QueryContainer qYear=null;
    foreach (var year in years)
    {
        qYear |= new TermQuery() { Field = "year", Value = year };     
    }

// For FORMAT
 var qformat = new List<QueryContainer>();
 foreach (var format in txtDocs)
   {                    
     qformat.Add(Query<Document>.Match(m => m.OnField(p => p.Format).Query(format)));                
   }

  // For CONTENT
  var qc = new List<QueryContainer>();
   qc.Add(Query<Document>.Match(m …
Run Code Online (Sandbox Code Playgroud)

c# elasticsearch booleanquery nest

4
推荐指数
1
解决办法
3895
查看次数

标签 统计

booleanquery ×1

c# ×1

elasticsearch ×1

nest ×1