首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >不返回弹性搜索的ID搜索

不返回弹性搜索的ID搜索
EN

Stack Overflow用户
提问于 2021-05-19 21:09:31
回答 1查看 306关注 0票数 1

我有一个控制器,它包含一个方法,根据它的ID检索数据,使用NEST。在Kibana的CLI上,我获取所显示的ID,并将其粘贴到swagger web应用程序中,以查看它是否会填充,但不会(返回204)。

Swagger (asp.net核心web )

在我的GET方法中,我第一次尝试使用SearchAsync,但它没有工作,所以我切换到了GetAsync,但仍然无法工作。如果在我的模型类中创建了与CLI屏幕截图中第22行中的_source匹配的所有属性,则不知道为什么不起作用。是否有人有理由不返回我需要它做的事情并且只显示一个204?

代码语言:javascript
复制
        [HttpGet("{id}")]
        public async Task<EsSource> Get(String id)
        {
            /* var response = await _elasticClient.SearchAsync<EsSource>(s => s
                  .Index("elastic-search-app-logs*")
                  .Query(q => q.Match(m => m.Field(f => f.TimeStamp).Query(id))));*/

            var response = await _elasticClient.GetAsync<EsSource>(new DocumentPath<EsSource>(
               new Id(id)), x => x.Index("elastic-search-app-logs*"));

            return response?.Source;
        }

我的模特课

代码语言:javascript
复制
namespace ESPractice.Models
{
    public class EsSource
    {
        public String TimeStamp { get; set; }
        public String Level { get; set; }
        public String MessageTemplate { get; set; }
        public String Message { get; set; }
    }

    public class EsExceptions 
    {
        public String Depth { get; set; }
        public String ClassName { get; set; }
        public String Message { get; set; }
        public String Source { get; set; }
        public String StackTraceString { get; set; }
        public String RemoteStackTraceString { get; set; }
        public String RemoteStackIndex { get; set; }
        public String HResult { get; set; }
        public String HelpURL { get; set; }
    }

    public class EsFields
    {
        public String SourceContext { get; set; }
        public String ActionId { get; set; }
        public String ActionName { get; set; }
        public String RequestId { get; set; }
        public String RequestPath { get; set; }
        public String ConnectionId { get; set; }
        public String MachineName { get; set; }
        public String Environment { get; set; }
    }

}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-20 09:05:14

您可以简单地使用await _client.GetAsync<EsSource>(id, x => x.Index("elastic-search-app-logs*"));打电话。

您还可以启用调试,这样就可以获得有关发送给elasticsearch的详细信息,以及所描述的这里的响应是什么。

如果您想调试单个调用,您可以这样做(确保没有为生产启用它)

代码语言:javascript
复制
var response = client.Search<Project>(s => s
    .RequestConfiguration(r => r
        .DisableDirectStreaming() 
    )
    .Query(q => q
        .MatchAll()
    )
);

有关更多细节,请查看response.DebugInformation

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67610942

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档