2

我已经设置了 elasticsearch(版本 1.7.3)和 Kibana(版本 4.1.2)来索引我们应用程序的 Elmah XML 文件错误。我正在使用 .Net 解析 xml 文件并使用 Nest ElasticSearch 客户端将索引插入到 ElasticSearch 中。问题是 Kibana 没有在“发现”选项卡中显示任何数据。

当我运行 curl -XGET localhost:9200/.kibana/index-pattern/eol 时?命令,我得到以下响应:

{"_index":".kibana","_type":"index-pattern","_id":"eol","_version":2,"found":tru
e,"_source":{"title":"eol","timeFieldName":"errorTime","fields":"[{\"name\":\"_i
ndex\",\"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"an
alyzed\":false,\"doc_values\":false},{\"name\":\"filePath\",\"type\":\"string\",
\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":true,\"doc_values\"
:false},{\"name\":\"_type\",\"type\":\"string\",\"count\":0,\"scripted\":false,\
"indexed\":true,\"analyzed\":false,\"doc_values\":false},{\"name\":\"message\",\
"type\":\"string\",\"count\":0,\"scripted\":false,\"indexed\":true,\"analyzed\":
true,\"doc_values\":false},{\"name\":\"errorTime\",\"type\":\"date\",\"count\":0
,\"scripted\":false,\"indexed\":true,\"analyzed\":false,\"doc_values\":false},{\
"name\":\"_source\",\"type\":\"_source\",\"count\":0,\"scripted\":false,\"indexe
d\":false,\"analyzed\":false,\"doc_values\":false},{\"name\":\"_id\",\"type\":\"
string\",\"count\":0,\"scripted\":false,\"indexed\":false,\"analyzed\":false,\"d
oc_values\":false}]"}}

当前情况 Elasticsearch 已启动并运行,响应 API 直接在 Elasticsearch 上执行查询,例如http://localhost:9200/eol/_search?q= * 返回大量结果

在此处输入图像描述

Kibana 已启动并运行,甚至发现 Elasticsearch 公开的“eol”索引 Kibana 也显示“eol”文档的正确属性和数据类型“发现”选项卡没有显示任何结果...即使设置时间段到几年...我尝试从“设置”选项卡中删除索引,重新启动 Kibana,然后在“设置”中重新添加索引。我还尝试使用 yyyy-MM-ddThh:mm:ss 格式保存日期字段,但我仍然没有看到任何结果。我认为问题出在 Elmah UTC 日期格式(例如 2015-10-13T19:54:49.4547709Z)或 Elmah 消息上。我猜 ElasticSearch 喜欢 Elmah 消息,但 Kibana 不喜欢。

有任何想法吗??

以下是 Kibana 如何看待“eol”索引: 在此处输入图像描述

..以及我在发现选项卡中看到的内容: 在此处输入图像描述 在此处输入图像描述

4

2 回答 2

1

我正在使用 Nest 将数据插入 ElasticSearch。似乎 Nest 序列化 List 并向 ElasticSearch 发出请求的方式具有 Kibana 不喜欢的特殊字符。

之前(不工作):

private static void WriteErrorsIntoElasticSearchIndex(ElasticClient elasticClient, List<error> errors)
        {
                elasticClient.Index(errors);    
        }

之后(工作):

private static void WriteErrorsIntoElasticSearchIndex(ElasticClient elasticClient, List<error> errors)
        {
            foreach (var error in errors)
            {
                elasticClient.Index(error);    
            }
        }
于 2015-10-16T16:36:36.600 回答
0

您有 "\" ,通常在 elasticsearch 结果中没有,JSON 无法解析结果,因为它不合适,

于 2016-08-10T12:53:58.043 回答