我有一个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(搜索似乎也阻止了结果,我假设关于类的某些内容与数据不一致)因此无法反序列化或以其他方式过滤......)
答案 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")
);