Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/272.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# Elasticsearch嵌套-具有多个筛选器的简单查询_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# Elasticsearch嵌套-具有多个筛选器的简单查询

C# Elasticsearch嵌套-具有多个筛选器的简单查询,c#,elasticsearch,nest,C#,elasticsearch,Nest,我正在尝试执行一个简单的查询,我想: select * from POC where Account_No = [accountno] and BUSINESS_UNIT = [business_unit] 下面是我没有运气的情况。有什么想法吗 var filters = new List<FilterContainer>(); filters.Add(new FilterDescriptor<poc>().Bool(b => b.Must(m => m

我正在尝试执行一个简单的查询,我想:

select * from POC where Account_No = [accountno] and BUSINESS_UNIT = [business_unit] 
下面是我没有运气的情况。有什么想法吗

var filters = new List<FilterContainer>();

filters.Add(new FilterDescriptor<poc>().Bool(b => b.Must(m => m.Term(i => i.Account_No, txtAccount.Text))));
filters.Add(new FilterDescriptor<poc>().Bool(b => b.Must(m => m.Term(i => i.BUSINESS_UNIT, txtBU.Text))));

var searchDescriptor = new SearchDescriptor<poc>();
// Filter with AND operator
searchDescriptor.Filter(f => f.And(filters.ToArray()));

var r = client.Search<poc>(searchDescriptor);

这应该满足您的要求:

FilterContainer filter = null;

filter &= Filter<poc>.Term(i => i.Account_No, txtAccount.Text);
filter &= Filter<poc>.Term(i => i.BUSINESS_UNIT, txtBU.Text);

var r = client.Search<poc>(sd => sd.Filter(f => filter));
FilterContainer过滤器=null;
filter&=filter.Term(i=>i.Account\u No,txtcount.Text);
filter&=filter.Term(i=>i.BUSINESS\u单元,txtBU.Text);
var r=client.Search(sd=>sd.Filter(f=>Filter));

我将过滤器改为使用Match而不是Term,它似乎可以工作

我不知道为什么会出现这种情况,但当我使用术语Business\u Unit进行搜索时,即使是单独搜索,也不会返回任何结果

var filters = new List<FilterContainer>();

filters.Add(new FilterDescriptor<poc>().Bool(b => b.Must(m => m.Query(q => q.Wildcard(z => z.Account_No, txtAccount.Text + "*")))));
filters.Add(new FilterDescriptor<poc>().Bool(b => b.Must(m => m.Query(q => q.Match(mat => mat.OnField(z => z.BUSINESS_UNIT).Query(txtBU.Text))))));

var searchDescriptor = new SearchDescriptor<poc>();
// Filter with AND operator
searchDescriptor.Filter(f => f.And(filters.ToArray()));

var r = client.Search<poc>(searchDescriptor);
{
  "query": {
    "term": {
      "BUSINESS_UNIT": "cspcn"
    }
  }
}

我发现业务单元应该是小写的。谢谢你的回复啊,很好。听起来你在用标准分析仪。您可以为您的类型指定架构,并使用不同的分析器,该分析器可以不区分大小写。
{
  "query": {
    "term": {
      "BUSINESS_UNIT": "cspcn"
    }
  }
}