kibana 不加载时间序列数据
kibana not loading time series data
我正在尝试使用 kibana 和 ES 分析我的数据库中的时间序列。首先,我使用 python API 将我的数据索引到 ES 中。我使用的映射是:
data= {
"settings":{
"number_of_shards":1,
"number_of_replicas":1
},
"mappings":{
TYPE_NAME: {
"properties":{
"timestamp":{"type":"date", "format":"YYYY-MM-DD HH:mm:ss", "store":"true"},
"current":{"type":"float", "store":"true"},
"bid_qty":{"type":"float", "store":"true"},
"bid":{"type":"float", "store":"true"},
"offer":{"type":"float", "store":"true"},
"offer_qty":{"type":"float", "store":"true"},
"change":{"type":"float", "store":"true"},
"value":{"type":"string", "store":"true"}
}
}
}
}
然后我创建了一个索引并使用下面的代码转储了我的数据
es = Elasticsearch()
response = requests.put('http://127.0.0.1:9200/'+INDEX_NAME+'/', data=json.dumps(data))
row_data = ""
for row in rows:
row_data += '{"index":{"_id": "%s"}}\n' %row[0]
row_dict = {}
for i in range(1, len(row)):
row_dict[headers[i]] = str(row[i])
row_data += json.dumps(row_dict)
row_data += "\n"
response = requests.put('http://127.0.0.1:9200/'+INDEX_NAME+'/'+TYPE_NAME+'/_bulk', data=row_data)
加载此数据后,当我尝试在 kibana 中添加此索引时,它会询问我的时间戳字段是数据类型,然后我单击创建。但是在发现选项卡中,我根本找不到我的数据。
有趣的是,我将我的时间戳字段作为类型字符串,并在 ES 中创建一个新索引,然后它的所有内容都作为非时间序列数据加载。但这对我没有多大用处。如果我做错了什么,请建议我。谢谢。
经过一段时间的不断尝试,我猜对了一部分。所以基本上我没有给出正确的格式。 "YYYY-MM-DD"
应该是 yyyy-MM-dd
。但随后在使用 kibana 可视化数据时,在时间列中,它显示逗号分隔的两个日期,一个在我的数据库中,另一个是 UTC。这里的主要问题是所有图表都使用了我不想要的 UTC 时间。因此,在进行更多研究之后,我使用了这种格式 yyyy-MM-dd HH:mm:ss Z
,并在插入日期时添加了 +05:30 (IST),即 str(date) + " +05:30"
。在此之后,在 kibana 中,在我的时间列中,它显示了两个逗号分隔的东西,Invalid date, 2015-08-26 09:00:49
。然而,这些图表是在我当地时间制作的。我想我已经找到了一个临时解决方案,如果有人想对此进行改进,非常欢迎,并在其中添加更多内容。我认为正确的解决方案应该是 kibana 中的时间列应该只显示一个日期,那应该是我本地插入的日期。
我正在尝试使用 kibana 和 ES 分析我的数据库中的时间序列。首先,我使用 python API 将我的数据索引到 ES 中。我使用的映射是:
data= {
"settings":{
"number_of_shards":1,
"number_of_replicas":1
},
"mappings":{
TYPE_NAME: {
"properties":{
"timestamp":{"type":"date", "format":"YYYY-MM-DD HH:mm:ss", "store":"true"},
"current":{"type":"float", "store":"true"},
"bid_qty":{"type":"float", "store":"true"},
"bid":{"type":"float", "store":"true"},
"offer":{"type":"float", "store":"true"},
"offer_qty":{"type":"float", "store":"true"},
"change":{"type":"float", "store":"true"},
"value":{"type":"string", "store":"true"}
}
}
}
}
然后我创建了一个索引并使用下面的代码转储了我的数据
es = Elasticsearch()
response = requests.put('http://127.0.0.1:9200/'+INDEX_NAME+'/', data=json.dumps(data))
row_data = ""
for row in rows:
row_data += '{"index":{"_id": "%s"}}\n' %row[0]
row_dict = {}
for i in range(1, len(row)):
row_dict[headers[i]] = str(row[i])
row_data += json.dumps(row_dict)
row_data += "\n"
response = requests.put('http://127.0.0.1:9200/'+INDEX_NAME+'/'+TYPE_NAME+'/_bulk', data=row_data)
加载此数据后,当我尝试在 kibana 中添加此索引时,它会询问我的时间戳字段是数据类型,然后我单击创建。但是在发现选项卡中,我根本找不到我的数据。 有趣的是,我将我的时间戳字段作为类型字符串,并在 ES 中创建一个新索引,然后它的所有内容都作为非时间序列数据加载。但这对我没有多大用处。如果我做错了什么,请建议我。谢谢。
经过一段时间的不断尝试,我猜对了一部分。所以基本上我没有给出正确的格式。 "YYYY-MM-DD"
应该是 yyyy-MM-dd
。但随后在使用 kibana 可视化数据时,在时间列中,它显示逗号分隔的两个日期,一个在我的数据库中,另一个是 UTC。这里的主要问题是所有图表都使用了我不想要的 UTC 时间。因此,在进行更多研究之后,我使用了这种格式 yyyy-MM-dd HH:mm:ss Z
,并在插入日期时添加了 +05:30 (IST),即 str(date) + " +05:30"
。在此之后,在 kibana 中,在我的时间列中,它显示了两个逗号分隔的东西,Invalid date, 2015-08-26 09:00:49
。然而,这些图表是在我当地时间制作的。我想我已经找到了一个临时解决方案,如果有人想对此进行改进,非常欢迎,并在其中添加更多内容。我认为正确的解决方案应该是 kibana 中的时间列应该只显示一个日期,那应该是我本地插入的日期。