c# - 无法在 Elasticsearch 对象语法中组合 2 个日期范围查询
问题描述
我想以一种通过“from”和“to”字段的精确值过滤文档的方式搜索文档。我使用传递给 bool 查询实例的 DateRangeQuery 对象。
此过滤器在仅过滤一个日期时工作正常,但当两个日期都处于活动状态时,它根本不返回任何文档。代码如下
DateRangeQuery fromDateRangeQuery = new DateRangeQuery()
{
Name = "from_query",
Field = "from",
GreaterThanOrEqualTo = dateFrom,
LessThanOrEqualTo = dateFrom,
};
queryContainers.Add(fromDateRangeQuery);
DateRangeQuery ToDateRangeQuery = new DateRangeQuery()
{
Name = "to_query",
Field = "to",
GreaterThanOrEqualTo = dateTo,
LessThanOrEqualTo = dateTo,
};
queryContainers.Add(ToDateRangeQuery);
//more terms filters not related to the 2 fields
var searchRequest = new SearchRequest("0___aggregate_");
searchRequest.SearchType = SearchType.QueryThenFetch;
searchRequest.From = 0;
searchRequest.Size = 10000;
searchRequest.Query = boolQuery;
var searchResponse = Get().SearchAsync<AggregationHolder>(searchRequest);
searchResponse.Wait(60000);
var status = searchResponse.Result;
dateFrom 和 dateTo 都是常规的日期时间对象。我做错了什么,为什么我不能结合这两个过滤器?
解决方案
也许,问题是您的日期格式。你能像下面这样试试吗?
ElasticClient elasticClient = new ElasticClient(new ConnectionSettings(
new Uri(connString))
.RequestTimeout(TimeSpan.FromMinutes(5))
.DefaultIndex(defaultIndexName)
);
DateRangeQuery queryFrom = new DateRangeQuery()
{
Name = "from_query",
Field = "from",
GreaterThanOrEqualTo = "05/12/2020 01:03:15",
LessThanOrEqualTo = "05/12/2020 01:03:16",
Format = "dd/MM/yyyy HH:mm:ss"
};
DateRangeQuery queryTo = new DateRangeQuery()
{
Name = "to_query",
Field = "to",
GreaterThanOrEqualTo = "05/12/2020 11:20:32",
LessThanOrEqualTo = "05/12/2020 11:20:33",
Format = "dd/MM/yyyy HH:mm:ss"
};
QueryContainer queryMain = queryFrom & queryTo;
ISearchResponse<AggregationHolder> searchResponse = elasticClient.Search<AggregationHolder>(s => s
.RequestConfiguration(r => r.DisableDirectStreaming())
.From(0)
.Size(100)
.Query(q2 => q2
.Bool(b => b
.Should(queryMain))
)
);
推荐阅读
- git - 如何将特定的 Unity 包添加到 Git 版本?
- javascript - Heroku:我部署的 socket.io 应用程序的主机名和端口是什么
- r - gganimate 在 2D 密度图上设置动画线的麻烦
- node.js - 如何在模型中删除程序时自动删除与特定程序相关的所有评论
- python - pytelegrambotapi:如何检查按钮按下?
- java - 当我只有 jar 依赖项时通过 inteliij 运行项目
- solr - Solr Core 在 8.7 上不断关闭
- c - 问题要求使用指针返回字符串的一部分
- ios - SwiftUI:点击时在视图周围绘制一个矩形
- python - 随机森林和 XGB 'Regressor' 如何计算特征重要性