elasticsearch,lambda,nest,.net,elasticsearch,Lambda,Nest" /> elasticsearch,lambda,nest,.net,elasticsearch,Lambda,Nest" />

.net SQL在与Nest客户端的弹性搜索中的运算符等效

.net SQL在与Nest客户端的弹性搜索中的运算符等效,.net,elasticsearch,lambda,nest,.net,elasticsearch,Lambda,Nest,我在筛选搜索以匹配值列表时遇到问题 这是我的密码 List<string> DepartmentIds = new List<string>(){"d1","d2","d3","d4"}; term = "*" + "akshay" + "*" var searchResults = client.Search<Employee>(c => c .Index(index)

我在筛选搜索以匹配值列表时遇到问题

这是我的密码

List<string> DepartmentIds = new List<string>(){"d1","d2","d3","d4"};

term = "*" + "akshay" + "*"

var searchResults = client.Search<Employee>(c => c
                          .Index(index)
                          .Type(type)
                          .Query(+q.Term(f => f.DeptId.ToLower(), DepartmentIds))   // Facing Issue in Matching list of Department IDs
                            && ((q.Wildcard(wc => wc.Field(f => f.FirstName).Value(term)))                        
                                 || (q.Wildcard(wc => wc.Field(f => f.LastName).Value(term)))                       
                                 ));
List DepartmentIds=newlist(){“d1”、“d2”、“d3”、“d4”};
term=“*”+“akshay”+“*”
var searchResults=client.Search(c=>c
.索引(索引)
.类型(类型)
.Query(+q.Term(f=>f.DeptId.ToLower(),departmentId))//在部门ID的匹配列表中面临问题
&&((q.Wildcard(wc=>wc.Field(f=>f.FirstName.Value(term)))
||(q.Wildcard(wc=>wc.Field(f=>f.LastName).Value(term)))
));
假设有10个部门,我想从D1、D2、D3和D4部门获取结果。我基本上应该看看索引文档中的部门ID是否与4个部门中的任何一个匹配

因为部门ID的数量及其值将是动态的。基本上,我想在NEST Client中找到与sql in运算符等效的运算符,以便我可以适当地筛选搜索。

您可以使用进行此操作

List<string> departmentIds = new List<string>() { "d1", "d2", "d3", "d4" };

var term = "*" + "akshay" + "*";
var index = "index";
var type = "type";

var searchResults = client.Search<Employee>(c => c
    .Index(index)
    .Type(type)
    .Query(q => 
        +q.Terms(t => t
            .Field(f => f.DeptId)
            .Terms<string>(departmentIds)
        ) && (
            q.Wildcard(wc => wc.Field(f => f.FirstName).Value(term)) || 
            q.Wildcard(wc => wc.Field(f => f.LastName).Value(term))
        )
    )
);
记住这一点

您可能需要查看了解您正在做的事情您可以使用来完成此操作

List<string> departmentIds = new List<string>() { "d1", "d2", "d3", "d4" };

var term = "*" + "akshay" + "*";
var index = "index";
var type = "type";

var searchResults = client.Search<Employee>(c => c
    .Index(index)
    .Type(type)
    .Query(q => 
        +q.Terms(t => t
            .Field(f => f.DeptId)
            .Terms<string>(departmentIds)
        ) && (
            q.Wildcard(wc => wc.Field(f => f.FirstName).Value(term)) || 
            q.Wildcard(wc => wc.Field(f => f.LastName).Value(term))
        )
    )
);
记住这一点


您可能想查看了解您正在做的事情

如果您使用
术语而不是
术语
,该怎么办?嗨,瓦尔。您可以提供一个使用术语的示例。尝试
q.Terms(f=>f.DeptId.ToLower(),DepartmentIds)
而不是
q.Term(f=>f.DeptId.ToLower(),DepartmentIds)
术语没有这种语法。术语仅支持一种语法公共查询容器术语(Func选择器);您使用的是哪一版本的NEST,您使用的是哪一版本的Elasticsearch?如果您使用
术语而不是
术语,会怎么样?嗨,瓦尔。您能提供一个使用术语的示例吗。请尝试
q.Terms(f=>f.DeptId.ToLower(),部门ID)
而不是
q.Term(f=>f.DeptId.ToLower(),部门ID)
术语没有这种语法。术语仅支持一种语法公共查询容器术语(Func选择器);您使用的是哪一版本的NEST?您使用的是哪一版本的Elasticsearch?谢谢Rus,也谢谢您的通配符推荐。如何预测查询的输出。我正在使用VisualStudio。是否有一种方法可以获取输出查询?请查看注销请求和响应。我建议您在开发中使用它。谢谢您,罗斯,也谢谢您的通配符推荐。如何预测查询的输出。我正在使用VisualStudio。是否有一种方法可以获取输出查询?请查看注销请求和响应。我建议在开发中使用这个