elasticsearch,C#,elasticsearch" /> elasticsearch,C#,elasticsearch" />

C# 弹性搜索中按日期范围列表搜索

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

我正在开发一个需要从任意计划中选择有效天数的系统

我希望能够使用DateRange列表作为搜索请求,但我不确定如何在elastic NEST中有效地执行此操作

下面是一些示例代码,用于说明我正在尝试有效地执行的操作

// 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"
                    }
                }
            }
        ]
    }
 }
}