Kibana 无法识别 Elastic Search 日期字段
Kibana not recognizing Elastic Search date field
我是 ElasticSearch / Kibana 菜鸟,正在尽最大努力自学这项服务的基础知识。我正在尝试将一些 Keyword
文档插入到我的 AWS ElasticSearch 服务中。该文档非常简单。它包含
created_at
一个日期时间字段
updated_at
: 日期时间 字段
keyword
:实际关键字本身,如watercolors
这样的字符串
或 romanticism
user_id
: 创建该关键字的用户
使用 Kibana 开发控制台,我使用 PUT
请求定义了此索引的映射,然后发送此 GET
请求以检查它是否有效(GET /keyword_index/_mapping/Keyword
):
{
"keyword_index": {
"mappings": {
"Keyword": {
"properties": {
"_created_at": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
},
"_updated_at": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
},
"keyword": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"userId": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
我已使用以下 POST
请求(来自 Python 脚本)成功地将记录插入 /keyword_index/Keyword
:
POST MY_ES_SERVICE_ADDRESS/keyword_index/Keyword/FzaGCiZl68/_create
{"keyword": "Comedy", "userId": "hjkJVM4TjD12N", "_created_at": "2017-12-28 02:52:14", "_updated_at": "2017-12-28 02:52:14"}
这是执行 match_all
查询的示例结果:
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 332,
"max_score": 1,
"hits": [
{
"_index": "keyword_index",
"_type": "Keyword",
"_id": "HCQAm97kbs",
"_score": 1,
"_source": {
"keyword": "Controlled",
"userId": "",
"_created_at": "2017-10-12 06:01:14",
"_updated_at": "2017-10-12 06:01:14"
}
}, ... more results below not shown...
但是,当我尝试创建索引映射时,Kibana 无法识别我的日期时间字段:
此外,当我检查 Kibana 中的字段时,我看到了一堆我没有为其创建映射的字段,也没有在我发送 POST
请求时插入。而且,更重要的是,我根本看不到我的日期字段:
我在这里找到了 ,但接受的答案是单击 Kibana 管理控制台中的 "refresh fields" 橙色按钮,但我没有看到这样的东西。
我的日期字段去哪儿了?为什么它们不被 Kibana 识别?
我相信我找到了罪魁祸首。 以下划线开头的字段,例如 _created_at
不会显示在 Kibana 中,正如我在 Github issue.
中发现的那样
我只是将映射从 _created_at
更改为 created_at
,将 _updated_at
更改为 updated_at
,此问题已解决。
我真的不介意,因为我了解区分内部字段和面向用户的字段的必要性,但也许 Kibana 中一些更重要的文档可以帮助我们省去一些麻烦和时间?
我是 ElasticSearch / Kibana 菜鸟,正在尽最大努力自学这项服务的基础知识。我正在尝试将一些 Keyword
文档插入到我的 AWS ElasticSearch 服务中。该文档非常简单。它包含
created_at
一个日期时间字段updated_at
: 日期时间 字段keyword
:实际关键字本身,如watercolors
这样的字符串 或romanticism
user_id
: 创建该关键字的用户
使用 Kibana 开发控制台,我使用 PUT
请求定义了此索引的映射,然后发送此 GET
请求以检查它是否有效(GET /keyword_index/_mapping/Keyword
):
{
"keyword_index": {
"mappings": {
"Keyword": {
"properties": {
"_created_at": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
},
"_updated_at": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss"
},
"keyword": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"userId": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
}
}
}
}
}
}
我已使用以下 POST
请求(来自 Python 脚本)成功地将记录插入 /keyword_index/Keyword
:
POST MY_ES_SERVICE_ADDRESS/keyword_index/Keyword/FzaGCiZl68/_create
{"keyword": "Comedy", "userId": "hjkJVM4TjD12N", "_created_at": "2017-12-28 02:52:14", "_updated_at": "2017-12-28 02:52:14"}
这是执行 match_all
查询的示例结果:
{
"took": 3,
"timed_out": false,
"_shards": {
"total": 5,
"successful": 5,
"skipped": 0,
"failed": 0
},
"hits": {
"total": 332,
"max_score": 1,
"hits": [
{
"_index": "keyword_index",
"_type": "Keyword",
"_id": "HCQAm97kbs",
"_score": 1,
"_source": {
"keyword": "Controlled",
"userId": "",
"_created_at": "2017-10-12 06:01:14",
"_updated_at": "2017-10-12 06:01:14"
}
}, ... more results below not shown...
但是,当我尝试创建索引映射时,Kibana 无法识别我的日期时间字段:
此外,当我检查 Kibana 中的字段时,我看到了一堆我没有为其创建映射的字段,也没有在我发送 POST
请求时插入。而且,更重要的是,我根本看不到我的日期字段:
我在这里找到了
我的日期字段去哪儿了?为什么它们不被 Kibana 识别?
我相信我找到了罪魁祸首。 以下划线开头的字段,例如 _created_at
不会显示在 Kibana 中,正如我在 Github issue.
我只是将映射从 _created_at
更改为 created_at
,将 _updated_at
更改为 updated_at
,此问题已解决。
我真的不介意,因为我了解区分内部字段和面向用户的字段的必要性,但也许 Kibana 中一些更重要的文档可以帮助我们省去一些麻烦和时间?