我有一个发送到elasticsearch的文档,看起来像这样:
{
"created": 1543247749419,
"name": "something",
"person": {
"created": 1543247012491,
...
}
}
两个created
字段均为epoch_millis
日期格式(时间戳,以毫秒为单位)。我基本上尝试了三件事:
curl -H "Content-Type: application/json" -X POST "http://ipaddress:9200/somedb" -d "@/some/path"
到目前为止很好,但是索引将我的created
的类型设置为long
,而不是date
。
从Kibana界面复制索引,将long
更改为date
,并为其创建新的数据库:
{ “映射”:{ “ somedb2”:{ “属性”:{ “创建”:{ “ type”:“日期”, “格式”:“ x” },
并发送如下数据:
curl -H "Content-Type: application/json" -X POST "http://ipaddress:9200/somedb2" -d "@/some/path"
然后我收到了来自elasticsearch的错误消息
{ "error": {
"root_cause": [
{
"type": "mapper_parsing_exception",
"reason":"Root mapping definition has unsupported parameters: [mapping : {properties={created={type=date, format=x},
现在我真的不知道该怎么办。在interwebz上进行搜索基本上只涉及格式化部分,而没有太多关于配置或创建索引的内容。我需要一个用于Elasticsearch的插件来处理日期吗?
答案 0 :(得分:0)
JSON(ElasticSearch的数据格式)没有明确的日期格式,即使将其以其他方式传递,它们也始终被视为字符串。
因此,实际上,如果您未指定日期格式,则应考虑以下选项:“ strict_date_optional_time || epoch_millis”,即纪元-在您的情况下也是正确的。
这就是为什么每个人都只是在谈论格式而不是转换;)
答案 1 :(得分:0)
我知道了。
我执行的curl
命令似乎在使用的dbname
和映射器中使用的名称上有错误。 JSON上也有一个错误,这使得它很难理解。现在可以正常工作了。我也将format
更改为epoch_millis
,而不是x
。
现在它像一种魅力一样工作,并成为了我在Kibana的第一个仪表板。