Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/facebook/9.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_Filter_Nest - Fatal编程技术网 elasticsearch,filter,nest,C#,elasticsearch,Filter,Nest" /> elasticsearch,filter,nest,C#,elasticsearch,Filter,Nest" />

C# ElasticSearch和嵌套筛选不起作用

C# ElasticSearch和嵌套筛选不起作用,c#,elasticsearch,filter,nest,C#,elasticsearch,Filter,Nest,我运行了一个返回10个结果的查询。我的文档中有一个名为Type的属性。某些记录的此属性值为空字符串,而某些其他记录的此属性值为“AudioAlbum”或“AudioRington” 我想做两件事:1-从搜索结果中排除其Type属性没有值的文档。2-仅获取有声相册(作为不同的搜索) 我获取有声相册的搜索代码如下: var docs = client.Search<content>( b => b.Type("content")

我运行了一个返回10个结果的查询。我的文档中有一个名为Type的属性。某些记录的此属性值为空字符串,而某些其他记录的此属性值为“AudioAlbum”或“AudioRington”

我想做两件事:1-从搜索结果中排除其Type属性没有值的文档。2-仅获取有声相册(作为不同的搜索)

我获取有声相册的搜索代码如下:

    var docs = client.Search<content>(
               b => b.Type("content")
               .Query(q => q.Fuzzy(fz => fz
               .OnField("title").Value(keyWord)
               .OnField("artists.name")))
               .Filter(x => x.Term("type", "AudioRingtone")))
               .Documents.ToList();
var docs=client.Search(
b=>b.Type(“内容”)
.Query(q=>q.Fuzzy(fz=>fz
.OnField(“title”).Value(关键字)
.OnField(“artists.name”))
.Filter(x=>x.Term(“类型”、“音频铃声”))
.Documents.ToList();
如果没有过滤器扩展方法,我可以得到10张唱片(包括两张唱片)。当我添加.Filter方法时,我得到的记录为零

我还想排除Type属性没有值的记录。同样,我的代码(如下所示)没有记录任何结果:

BaseFilter notFilter = Filter.Not(x => Filter.Term("Type", string.Empty));
var docs = client.Search<content>(
                b =>
                b.Type("content")
                .Query(q => q.Fuzzy(fz =>fz.OnField("title")
                .Value(keyWord)
                .OnField("artists.name")))
                .Filter(notFilter)).Documents.ToList();
BaseFilter-notFilter=Filter.Not(x=>Filter.Term(“Type”,string.Empty));
var docs=client.Search(
b=>
b、 类型(“内容”)
.Query(q=>q.Fuzzy(fz=>fz.OnField(“标题”)
.Value(关键字)
.OnField(“artists.name”))
.Filter(notFilter)).Documents.ToList();

我的代码怎么了?

从elasticsearch用户列表复制粘贴的答案

在第一个示例中,您在字段“type”上进行筛选,在第二个示例中,您在字段“type”上进行筛选,我想您需要将第一个字段更改为“type”

根据您对“类型”字段的分析,您可能还需要使用小写的“AudioRingtone”

在第二个示例中,您使用了错误的查询:

在NEST中,您可以这样做:

如果您发出一个空项筛选器/查询,您将点击NEST无条件查询逻辑,NEST实际上根本不会发送筛选器


有关使用查询dsl的帮助,请参阅。

嗨,Araf,我在邮件列表中也回答了这个问题。这解决了问题吗?是的,Martijn,非常感谢