【发布时间】:2017-05-03 14:26:34
【问题描述】:
我正在尝试使用 NEST api 在预定义的日期范围内从 elasticsearch 获取结果,但我无法管理。这个示例代码我试图检索一周的数据,但它忽略了我的日期过滤器并返回比我的初始日期更旧的数据。
提前感谢您的帮助!
var node = new Uri("http://localhost:9200");
var settings = new ConnectionSettings(node);
var client = new ElasticClient(settings);
settings.DefaultIndex("wholelog-2017.04*");
client.CreateIndex("wholelog-2017.04*",
create => create.Mappings(
mappings => mappings.Map<LogLine>(type =>
type.AutoMap()
)
));
DateTime InitDate = DateTime.Now.AddDays(-7);
var filterClauses = new List<QueryContainer>();
filterClauses.Add(new DateRangeQuery
{
Field = new Field("logTime"),
LessThanOrEqualTo = DateTime.Now,
GreaterThanOrEqualTo = InitDate
});
var searchRequest = new SearchRequest<LogLine>()
{
Size = 10000,
From = 0,
Scroll = "1m",
Query = new BoolQuery
{
Filter = filterClauses
}
};
var searchResult = client.Search<LogLine>(searchRequest);
[ElasticsearchType(Name="logLine")]
public class LogLine
{
public string Message {get;set;}
public DateTime logTime {get;set;}
public string type {get;set;}
public string logServer {get;set;}
}
logstash 配置文件
output {
elasticsearch{
hosts => "localhost"
#user => ####
#password => ####
index => "wholelog-%{+YYYY.MM.dd}"
}
}
【问题讨论】:
-
您能提供您对此查询的映射和响应吗?
-
感谢您的帮助,我添加了映射。它是一个自动填充的 POCO 类。我已经尝试过 DateMath 和 DateTime ,结果相同。数据被正确映射,我可以通过调试看到对象 LogLine 已正确填充。我不知道为什么日期查询不起作用...
标签: elasticsearch nest