C# 使用嵌套查询linq弹性搜索
是否有任何方法可以使用linq或lambda表达式查询NEST客户端的Elasticsearch 我想做这样的事情:C# 使用嵌套查询linq弹性搜索,c#,linq,
elasticsearch,nest,C#,Linq,
elasticsearch,Nest,是否有任何方法可以使用linq或lambda表达式查询NEST客户端的Elasticsearch 我想做这样的事情: client.Search<MyClass>(s => s.MyProperty.Contains("value") && (s.MySecondProperty == 123 || s.ThirdProperty > 12))
client.Search<MyClass>(s => s.MyProperty.Contains("value") &&
(s.MySecondProperty == 123 ||
s.ThirdProperty > 12)) ;
我读了一点,但它似乎不再活跃。上一个nuget软件包于2015年10月发布
我想做的是创建一个方法,从调用方获取一个表达式作为参数,并用它搜索elastic。调用者不应依赖ES或嵌套API简言之,否。 较长的答案是,是我所知道的最接近LINQ的提供者,但没有公开Elasticsearch API的所有功能 虽然在
LINQ
、IQueryable
等与Elasticsearch查询DSL和REST API公开的搜索功能之间存在一些重叠,但有许多查询无法用LINQ轻松表达,例如a看起来像什么,或a或a
您需要扩展LINQ中可用的方法,并编写一个非平凡的查询提供程序,所有这些都是为了将定义良好的查询DSL适合LINQ范式
就我个人而言,我倾向于接受查询DSL和RESTAPI,并希望将您的表达式转换为可以使用NEST、Elasticsearch.Net或HttpClient
发送的内容。调用方仍然不需要知道请求是如何发出的
如果您最终编写了LINQ查询提供程序,我会非常感兴趣:)您今天在那里编写的确切查询在ElasticLINQ中非常有效
该项目仍然存在——只是有时候没有理由发布新版本。今天发布了一个point release,它修复了使用AND中嵌套的OR生成查询(而不是过滤器)时出现的问题。支持v5.x的任何ETA?我的工作不再涉及.NET或Elasticsearch,因此我不确定在没有帮助的情况下是否会有任何移动。
var query = from m in MyContext.MyClass
where ...
select m