.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。是否有一种方法可以获取输出查询?请查看注销请求和响应。我建议在开发中使用这个