首页 > 解决方案 > 在 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) 这样的简单添加或其他方式可以实现这一点?

标签: elasticsearch

解决方案


您可以使用该DateRange函数(代表rangeDSL 查询)来执行此操作。您需要使用 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))
                 )
            )
                

推荐阅读