MongoDB 复合索引到 Kibana elasticsearch
Posted
技术标签:
【中文标题】MongoDB 复合索引到 Kibana elasticsearch【英文标题】:Mongodb compound index to Kibana elasticsearch 【发布时间】:2017-08-03 11:18:55 【问题描述】:我在尝试从 mongoDB 数据库在 Kibana 上设置仪表板时遇到问题。
问题发生在复合索引上。我在 mongoDB 中有一个带有复合索引的集合:
sale : "_id" : "date" : Date,
"country" : String,
"game_id" : String ,
"field_1" : String,
"field_n" : String
我正在尝试使用 mongoDB 文档的 _id 字段中的日期生成 Kibana 仪表板。
为了从 Kibana 访问 mongoDB 数据库,我使用了 mongo-connector elastic2,一切似乎都正常,因为我可以在 Kibana 中正确查看所有字段以及文档。但是 _id 没有被解释,它显示为一个字符串而不是 3 个字段。
_id:'game_id': 'com.id.game', 'date': datetime.datetime(2016, 6, 22, 0, 0), 'country': 'DZ'
我想要让 Kibana 知道 _id 不是字符串,即字符串 (game_id)、日期 (date) 和字符串 (国家),并让我使用日期字段作为报告字段,但到目前为止我还没有成功。
有人知道我该怎么做吗? 非常感谢您提前。
【问题讨论】:
_id 是文档 id 的保留键。 ES 允许该字段使用字符串、整数类型而不是 json 对象。 我知道,这就是为什么它将我的日期、国家和游戏 ID 结构转换为纯字符串的原因,但是,我该怎么做才能恢复我的字段(日期、国家和游戏 ID)? 那么我会建议将_id字段映射到弹性中的其他字段。检查我的答案 【参考方案1】:根据官方documentation 的 elastic_id 是每个类型的保留关键字,它代表每个文档的唯一标识符。 _id 以及 _index、_type、_uid 是 meta-fields 的类型。
如果您想保留您的 _id json 对象,您可以使用 mongo-elastic 命名空间配置(如 here)将 mongo 中的这个 _id 映射到 elastic 中的某个新字段。
"namespaces":
"include": ["document_type._id"],
"mapping":
"document_type._id": "document_type.mongo_id"
或类似-n company.employees -g company.new_employees
的命令
谢谢
【讨论】:
感谢您的回答,我已经尝试过您的解决方案,但是上面有两个 cmets: - 自 2.5.0 版以来似乎已弃用。 - 我已经尝试了自 v.2.5.0 以来应该采用的方式,例如:“namespaces”:“以上是关于MongoDB 复合索引到 Kibana elasticsearch的主要内容,如果未能解决你的问题,请参考以下文章
MongoDB——索引类型之复合索引(Compound Index)