我是ElasticSearch / Kibana noob,并且正在尽力向自己介绍这项服务的基础知识。我正在尝试将一些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
}
}
}
}
}
}
}
}
我已使用以下
/keyword_index/Keyword
请求(来自Python脚本)成功地将记录插入到 POST
中: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
请求时插入。而且,更重要的是,我根本看不到日期字段:我在这里找到了similar SO post,但是可以接受的答案是在Kibana Management控制台中单击“刷新字段”橙色按钮,但是我看不到这种东西。
我的日期字段去哪里了?为什么他们不被基巴纳认可?
最佳答案
我相信我找到了罪魁祸首。 以下划线开头的字段(例如_created_at
)未在Kibana中显示,正如我在此Github issue中发现的那样。
我只是将映射从_created_at
更改为created_at
,将_updated_at
更改为updated_at
,此问题已解决。
我并不介意,因为我了解区分内部字段和面向用户字段的必要性,但是也许Kibana中一些更出色的文档可以帮助我们节省一些头痛和时间?