如何使用NEST在Logstash上构建Elasticsearch的过滤器?

时间:2014-04-02 06:19:30

标签: elasticsearch logstash nest

我有一个logstash / elasticsearch / kibana系统设置和结构化的json类型日志正在进入弹性搜索(不是来自C#应用程序)并且在kibana中可见。

我正在使用NEST,因为我想从logstash切片数据。

以下代码正在制作" hits"我可以在调试器中检查的结果。

ElasticClient client = new ElasticClient(settings);


var searchResults = client.Search( s  => s
                                      .From(0)
                                      .Size(100)
                                      .AllIndices()

                                      .SortDescending("@timestamp")
                                  );

但是,如果我尝试扩展搜索以包含我认为存在于日志中的内容(在Kibana中可见),我现在得到结果。

 var searchResults = client.Search( s  => s
                                      .From(0)
                                      .Size(100)
                                      .AllIndices()
                                      .Query(q => q
                                         .Term("MySpecialFieldName", "ValueThatAppears")
                                       )
                                       .SortDescending("@timestamp")
                                   );

我还想利用样品中显示的类型安全性和其他机制。我不确定这是否与预期相关。

(我正在努力解决这个问题:添加一个类似" client.Search(搜索似乎也阻止了结果,我假设关于类的某些内容与数据不一致)因此无法反序列化或以其他方式过滤......)

1 个答案:

答案 0 :(得分:1)

找到正确的设置以使其工作:

当通过弹性搜索索引时,logstash系统将其置于一种类型(我认为的日志或日志)中。该术语也需要以“.raw”为后缀。因此,工作示例最终成为:

 var searchResults = client.Search<MyClass>( s  => s
                                      .From(0)
                                      .Size(100)
                                      .AllIndices()
                                      .AllTypes()
                                      .Query(q => q
                                         .Term("MySpecialFieldName.raw", "ValueThatAppears")
                                       )
                                       .SortDescending("@timestamp")
                                   );