elasticsearch - 在 ElasticSearch Nest 客户端中按日期范围和关键字搜索?
问题描述
我正在尝试使用 Nest 客户端实现一个搜索,该搜索将通过给定的关键字以及给定的日期范围进行过滤。
var searchResponse = client.Search<mdl.Event>(s => s
.From(0)
.Query(q => q
.Match(m => m
.Query(search.Text))));
这会按预期返回,但我无法找到一种按日期过滤的方法。有没有像 .Date(d => d) 这样的简单添加或其他方式可以实现这一点?
解决方案
您可以使用该DateRange
函数(代表range
DSL 查询)来执行此操作。您需要使用 bool 查询组合这两个约束
var searchResponse = client.Search<mdl.Event>(s => s
.From(0)
.Query(q =>
q.Match(m => m.Query(search.Text)) &&
q.DateRange(r => r
.Field(f => f.StartedOn)
.GreaterThanOrEquals(new DateTime(2017, 01, 01))
.LessThan(new DateTime(2018, 01, 01))
)
)
推荐阅读
- excel - 您可以使用 Excel 的新动态函数创建交叉表吗?
- laravel - 如何在 api 路由中使用 laravel 中的路由名称
- logging - 数据访问和访问透明度云审核日志中的数据有多敏感?
- pine-script - Pinescript strategy.exit() 执行顺序
- yocto - 在 Yocto 图像配方中,我可以包含另一个图像配方吗
- node.js - express/typescript:在服务器端,如何创建一个全局变量来存储多个套接字?
- amazon-ecs - GitHub OAuth App + Django + ECS Fargate 问题
- php - 我想为 Woocommerce 制作插件
- installation - 从 cmake 库组件获取库路径
- google-sheets - GoogleSheets:如何使用过滤器查询返回与 2 列匹配的最新记录