C# 弹性搜索中按日期范围列表搜索
我正在开发一个需要从任意计划中选择有效天数的系统 我希望能够使用DateRange列表作为搜索请求,但我不确定如何在elastic NEST中有效地执行此操作 下面是一些示例代码,用于说明我正在尝试有效地执行的操作C# 弹性搜索中按日期范围列表搜索,c#,
elasticsearch,C#,
elasticsearch,我正在开发一个需要从任意计划中选择有效天数的系统 我希望能够使用DateRange列表作为搜索请求,但我不确定如何在elastic NEST中有效地执行此操作 下面是一些示例代码,用于说明我正在尝试有效地执行的操作 // my list of date ranges var dateQuery = new List<DateRangeQuery>(); // make query foreach day foreach (var day in valid_days) { d
// my list of date ranges
var dateQuery = new List<DateRangeQuery>();
// make query foreach day
foreach (var day in valid_days)
{
dateQuery.Add(new DateRangeQuery
{
Field = "Date",
GreaterThanOrEqualTo = day.Item1, // DateTime start of day tuple
LessThanOrEqualTo = day.Item2 // DateTime end of day tuple
});
}
// query by list of search request
var search = new SearchRequest
{
// how do i use a list of date time's here?
Query = dateQuery;
}
var example = _client.Search(search);
与elastic交谈时,他们也希望在将来使C开发人员的NEST API更简单,所以请关注本文
所有选择器都感觉代码中有太多的内容
我使用了| |运算符而不是|,因为| |对性能有好处如果对表达式求值并匹配,它会更快返回
希望这能帮助任何寻找它的人。我想您需要使用bool query with must来进行多范围查询。差不多
{
"query": {
"bool": {
"must": [
{
"range": {
"created_at": {
"gte": "2013-12-09T00:00:00.000Z"
}
}
},
{
"range": {
"happens_on": {
"lte": "2013-12-16T00:00:00.000Z"
}
}
}
]
}
}
}
在.Net客户端中,我认为可以使用QueryContainer。请参考此内容,因为我对elasticsearch的.Net客户端不太熟悉。感谢您的回复,json为我指明了正确的方向,一旦我开始工作,我将使用相关的csharp更新此内容,供其他人查找。
{
"query": {
"bool": {
"must": [
{
"range": {
"created_at": {
"gte": "2013-12-09T00:00:00.000Z"
}
}
},
{
"range": {
"happens_on": {
"lte": "2013-12-16T00:00:00.000Z"
}
}
}
]
}
}
}