所以我的目标是使用ElasticSearch,ES作为日志。更具体地说,我想基本上只上传我的应用程序上次运行时的时间戳。上传工作正常,但我无法弄清楚如何从索引中获取数据。我已经尝试使用查询和聚合,但在任何情况下我都没有设法获得一些数据。我收到的回复是:
从POST上的低级别调用构建的有效NEST响应:/ lastrun / lastrun / _search。
我也尝试过搜索解决方案但无法找到适合我的任何内容。任何人都可以帮我提取数据吗?
索引名称为'lastrun',我上传到索引的类名为LastRun
。
Logger类
public static Boolean WriteLastRun()
{
var response = Elastic.Index(new LastRun { Date = DateTime.Now });
return response.IsValid ? true : false;
}
public static DateTime ReadLastRun()
{
var SearchResponse = Elastic.Search<LastRun>(s => s
.Query(q => q.MatchAll())
.Index("lastrun"));
Console.WriteLine(SearchResponse.Documents);
return new DateTime();
}
我上传到ES的LastRun课程。
public class LastRun
{
public DateTime Date { get; set; }
}
谢谢!
修改
Elastic的设置:
var settings = new ConnectionSettings(new Uri("http://localhost:9200/")).DefaultIndex('lastrun');
ElasticClient Elastic = new ElasticClient(settings);
编辑2 我可以验证是否正在通过此代码上传和搜索相同的索引,并检查kibana中的相同索引。
var resolver = new IndexNameResolver(settings);
var index = resolver.Resolve<LastRun>();
Console.WriteLine(index); //prints 'lastrun'
答案 0 :(得分:0)
事实证明从一开始就没有问题。搜索方法运行正常,我在错误的访问文档中有错误的想法。
这是做了什么,这是错误的:
Console.WriteLine(SearchResponse.Documents);
这是正确的方法:
foreach (var item in SearchResponse.Documents)
{
Console.WriteLine(item.Date)
}