使用 NEST 从 APM 检索事务

问题描述

我有一个 asp.net 核心 Web 应用程序应用程序,它将使用 serilog 将日志写入 elasticsearch,还可以使用 nesT 从 elasticsearch 读取日志。我还设置了它,我可以将 APM 用于我的应用程序。 如果我想使用 nesT 检索 APM 中的交易或特定日期的交易,这可能吗?任何有关此的建议/教程/文档都很棒!

enter image description here

解决方法

您需要定位 apm-*-transaction 个别名

在 Kibana 开发工具中

GET apm-*-transaction/_search
{
  "query": {
    "range": {
      "@timestamp": {
        "gte": "2021-06-04T00:00:00Z","lte": "2021-06-05T00:00:00Z"
      }
    }
  }
}

在 NEST 中(将 dynamic 更改为您的文档类型)

var client = new ElasticClient();
    
var searchResponse = client.Search<dynamic>(s => s
    .Index("apm-*-transaction")
    .Query(q => q
        .DateRange(dr => dr
            .Field("@timestamp")
            .GreaterThanOrEquals("2021-06-04T00:00:00Z")
            .LessThanOrEquals("2021-06-05T00:00:00Z")
        )
    )
);