微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用 API 后搜索不返回日志

如何解决使用 API 后搜索不返回日志

我想在使用 nesT 的 asp.net 核心 Web api 应用程序中从 elasticsearch 返回包含“level”:“error”的日志。我查看了 search_after api {{3} } 并查看了 Search After API 的另一个资源。在 Kibana CLI 上,我写了以下内容

GET elastic-search-app-log*/_search
{
  "size": 3000,"query": {
    "match": {
      "level": "Error"
    }
  },"search_after": [3000],"sort":[
    {"@timestamp": "asc"}
  ]
}

我只是将大小设置为随机大小,并在每 3000 个索引后搜索

因此,在 .net 方面,我尝试将其翻译为:

ESFieldsController

        private readonly IElasticclient _elasticclient;

        public ESFieldsController(IElasticclient elasticclient)
        {
            _elasticclient = elasticclient;
        }

        [HttpGet]
        public async Task<ESFields> Get()
        {
            var response = await _elasticclient.SearchAsync<ESFields>(s => s
                .Index("elastic-search-app-logs*")
                .Size(3000)
                .Query(q => q.Match(m => m.Field(f => f.Level == "error")))
                .SearchAfter(3000)
                .sort(srt => srt
                      .Ascending(p => p.TimeStamp)));

            Console.WriteLine(response);
            
            return response?.Documents?.FirstOrDefault();
        }

ESFields

namespace ESPractice.Models
{
    public class ESFields
    {
        public String Level { get; set; }
        public DateTime TimeStamp { get; set; }
    }
}

但是,当我运行应用程序并出现 swagger 时,我尝试执行 get cmd 以查看它是否有效,但它不返回包含 "level": "error" 的日志。 我在翻译时做错了什么吗?

Paginate Search After

enter image description here


附加信息:

startup.cs

        public void ConfigureServices(IServiceCollection services)
        {

            services.AddControllers();
            services.AddSwaggerGen(c =>
            {
                c.SwaggerDoc("v1",new OpenApiInfo { Title = "ESPractice",Version = "v1" });
            });

            // create a new node instance 
            var node = new Uri("http://localhost:9200");
            // settings instance for the node
            var settings = new ConnectionSettings(node);

            services.AddSingleton<IElasticclient>(new Elasticclient(settings));
        }

以下所有内容均来自我将日志写入 elasticsearch 的单独应用程序:

    public class Program
    {
        public static void Main(string[] args)
        {
            CreateHostBuilder(args).Build().Run();
        }

        public static IHostBuilder CreateHostBuilder(string[] args) =>
            Host.CreateDefaultBuilder(args)
                .UseSerilog((context,configuration) =>
                {
                    configuration.Enrich.FromLogContext()
                        .Enrich.WithMachineName()
                        .Writeto.Console()
                        .Writeto.Elasticsearch(
                            new ElasticsearchSinkOptions(new Uri(context.Configuration["ElasticConfiguration:Uri"]))
                            {
                               IndexFormat = $"{context.Configuration["ApplicationName"]}-logs-{context.HostingEnvironment.EnvironmentName?.ToLower().Replace(".","-")}-{DateTime.UtcNow:yyyy-MM}",AutoRegisterTemplate = true,})
                        .Enrich.WithProperty("Environment",context.HostingEnvironment.EnvironmentName)
                        .ReadFrom.Configuration(context.Configuration);
                })
                .ConfigureWebHostDefaults(webBuilder =>
                {
                    webBuilder.UseStartup<Startup>();
                });
    }

appsettings.json

{
  "ApplicationName": "elastic-search-app","Serilog": {
    "MinimumLevel": {
      "Default": "information","Override": {
        "Microsoft": "information","System": "Warning"
      }
    }
  },"ElasticConfiguration": {
    "Uri": "http://localhost:9200"
  },"AllowedHosts": "*"
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?