使用 NEST 使用 linq 查询弹性搜索
Querying elastic search with linq using NEST
有什么方法可以使用 linq 或 lambda 表达式通过 NEST 客户端查询 Elasticsearch。
我想做这样的事情:
client.Search<MyClass>(s => s.MyProperty.Contains("value") &&
(s.MySecondProperty == 123 ||
s.ThirdProperty > 12)) ;
或
var query = from m in MyContext.MyClass
where ...
select m
我读了一些关于ElasticLinq的内容,但它似乎不再活跃了。最后一个 nuget 包发布于 2015 年 10 月
我想做的是创建一个方法,从调用者那里获取一个表达式作为参数,并用它搜索 elastic。调用者不应依赖 ES 或 NEST API
简而言之,没有。
较长的答案是,ElasticLINQ 是我所知道的最接近 LINQ 提供程序但未公开 Elasticsearch API.
虽然在 LINQ
、IQueryable<T>
等之间存在 一些 重叠。 al,以及 Elasticsearch 查询 DSL 和 REST API 公开的搜索功能,有许多查询无法用 LINQ 轻松表达,例如completion suggester query look like, or a function score query or a moving average aggregation using Holt-Winters 会是什么?
您需要扩展 LINQ 中可用的方法并编写一个 重要的 查询提供程序,所有这些都是为了将定义良好的查询 DSL 融入 LINQ 范例。
就个人而言,我倾向于接受查询 DSL 和 REST API,并希望将您的表达式转换为可以使用 NEST、Elasticsearch.Net 或 HttpClient
发送的内容。调用者仍然不需要知道请求是如何发出的。
如果您最终编写了 LINQ 查询提供程序,我会非常感兴趣:)
您今天在此处编写的确切查询在 ElasticLINQ 中运行得非常好。
该项目仍然存在 - 只是有时没有理由发布新版本。今天发布了一个小版本,用于修复使用嵌套在 AND 中的 OR 生成查询(而非过滤器)时的极端情况。
我目前正在使用 LINQ 查询提供程序库来生成 NEST 方法调用。如果有人感兴趣 - 这里是 link 到 GitHub 存储库 - https://github.com/VladislavRybnikov/NEST.Linq
有什么方法可以使用 linq 或 lambda 表达式通过 NEST 客户端查询 Elasticsearch。
我想做这样的事情:
client.Search<MyClass>(s => s.MyProperty.Contains("value") &&
(s.MySecondProperty == 123 ||
s.ThirdProperty > 12)) ;
或
var query = from m in MyContext.MyClass
where ...
select m
我读了一些关于ElasticLinq的内容,但它似乎不再活跃了。最后一个 nuget 包发布于 2015 年 10 月
我想做的是创建一个方法,从调用者那里获取一个表达式作为参数,并用它搜索 elastic。调用者不应依赖 ES 或 NEST API
简而言之,没有。
较长的答案是,ElasticLINQ 是我所知道的最接近 LINQ 提供程序但未公开 Elasticsearch API.
虽然在 LINQ
、IQueryable<T>
等之间存在 一些 重叠。 al,以及 Elasticsearch 查询 DSL 和 REST API 公开的搜索功能,有许多查询无法用 LINQ 轻松表达,例如completion suggester query look like, or a function score query or a moving average aggregation using Holt-Winters 会是什么?
您需要扩展 LINQ 中可用的方法并编写一个 重要的 查询提供程序,所有这些都是为了将定义良好的查询 DSL 融入 LINQ 范例。
就个人而言,我倾向于接受查询 DSL 和 REST API,并希望将您的表达式转换为可以使用 NEST、Elasticsearch.Net 或 HttpClient
发送的内容。调用者仍然不需要知道请求是如何发出的。
如果您最终编写了 LINQ 查询提供程序,我会非常感兴趣:)
您今天在此处编写的确切查询在 ElasticLINQ 中运行得非常好。
该项目仍然存在 - 只是有时没有理由发布新版本。今天发布了一个小版本,用于修复使用嵌套在 AND 中的 OR 生成查询(而非过滤器)时的极端情况。
我目前正在使用 LINQ 查询提供程序库来生成 NEST 方法调用。如果有人感兴趣 - 这里是 link 到 GitHub 存储库 - https://github.com/VladislavRybnikov/NEST.Linq