Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.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# 使用嵌套中的集合之一查询单个值_C#_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch_.net Core_Nest - Fatal编程技术网 elasticsearch,.net-core,nest,C#,elasticsearch,.net Core,Nest" /> elasticsearch,.net-core,nest,C#,elasticsearch,.net Core,Nest" />

C# 使用嵌套中的集合之一查询单个值

C# 使用嵌套中的集合之一查询单个值,c#,elasticsearch,.net-core,nest,C#,elasticsearch,.net Core,Nest,在ElasticSearch实例中,我试图通过将一个字段与多个值匹配来搜索元素。即: public class User { public int Id { get; set; } public string Name { get; set; } public string Surname { get; set;} } 如果我有多个用户,并且我希望按名为John或Mike的用户进行筛选,直到版本6.x,此实现仍然有效: private QueryContainer Appl

在ElasticSearch实例中,我试图通过将一个字段与多个值匹配来搜索元素。即:

public class User
{
  public int Id { get; set; }
  public string Name { get; set; }
  public string Surname { get; set;}
}
如果我有多个用户,并且我希望按名为John或Mike的用户进行筛选,直到版本6.x,此实现仍然有效:

    private QueryContainer ApplyNameFilter(QueryContainerDescriptor<User> q, SearchParameters searchParameters)
    {
        return (searchParameters.Names != null && searchParameters.Names .Any()) ?
             q.Terms(z => z.Field(f => f.Name).Terms(searchParameters.Names))
             :
             q;
    }
private QueryContainer ApplyNameFilter(QueryContainerDescriptor q,SearchParameters SearchParameters)
{
return(searchParameters.Names!=null&&searchParameters.Names.Any())?
q、 术语(z=>z.Field(f=>f.Name).Terms(searchParameters.Names))
:
Q
}
请注意,在SearchParameters中,名称是IEnumerable

一旦我将ElasticSearch实例更新为7.x,也将NEST library更新为7.3.1,这个过滤器就不再工作了

查看一下,我不完全确定为了使它再次工作,我必须在那里重构什么

有人能帮我吗

“提前感谢”

字段用于匹配未分析的文本(未在标记中分解的文本)。 检查字段“Name”的映射,它将有一个类型为“keyword”的子字段关键字,或者您需要在映射中创建一个

你可以试试下面的查询
q、 Terms(z=>z.Field(f=>f.Name.Suffix(“关键字”)).Terms(searchParameters.Names))

当您说“此筛选器不再工作”时,什么不工作?它是否引发异常?它是否生成了正确的查询?它不会返回预期的结果吗?使用这种方法,客户端不会检索任何结果,而事实上,如果有与要显示的筛选器匹配的数据。尝试上面@jaspreet chahal建议的解决方案对我有效,谢谢你们的帮助。它对我有效,我将进一步调查未分析的文本。非常感谢你的帮助:)很高兴能帮上忙