从ElasticSeach NEST C#获取数据

时间:2017-06-01 07:45:49

标签: c# elasticsearch nest

所以我的目标是使用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'

1 个答案:

答案 0 :(得分:0)

事实证明从一开始就没有问题。搜索方法运行正常,我在错误的访问文档中有错误的想法。

这是做了什么,这是错误的:

Console.WriteLine(SearchResponse.Documents);

这是正确的方法:

foreach (var item in SearchResponse.Documents)
        {
            Console.WriteLine(item.Date) 
        }