mongodb - 如何在一个 Elasticsearch 索引中索引两个 mongodb 集合
问题描述
我有两个 mongodb 集合Transactions
,Users
这是事务示例
{ "_id" : ObjectId("5cdd391e1e4b8f0cb8e17d0f"), "txId" :
"6910dc01ff167d90e8fe249ce68a5149f82d099345473fab02916068570974bd",
"sender" : ObjectId("5cdbe473ca52557874005809"), "receiver" :
ObjectId("5cdd26a6b2d370061e8435d7"), "senderWalletId" :
ObjectId("5cdbe473ca5255787400580a"), "receiverWalletId" :
ObjectId("5cdd26a6b2d370061e8435d8"), "status" : "success", "type" :
"transfer", "amount" : 3000, "totalFee" : 40, "createdAt" :
ISODate("2019-05-16T10:19:10.809Z"), "updatedAt" :
ISODate("2019-05-16T10:19:10.809Z"), "__v" : 0 }
这是一个用户示例
{ "_id" : ObjectId("5d010a140f0c30757f59fe18"), "role" : "client",
"status" : "active", "isPhoneVerified" : true, "personalDocuments" : [
], "email" : "example.com", "firstName" : "mm", "lastName" : "mm",
"phoneNumber" : "0000000", "password" : "$2a$10$.", "pushToken" :
"cSRdsgJXAc67k-PIKwHvslINb0kAaStVzmYPqeIH5oudVTqppHFjxbGEg2B-
1Xe8P0iTH0EYB9PHbKKey", "created_at" :
ISODate("2019-06-12T14:20:04.338Z"), "updated_at" :
ISODate("2019-06-17T13:33:41.613Z"), "__v" : 0, "verifyPhoneCode" :
null }
我已经使用 logstash 和 mongodb-input-plugin 成功地在 ES 中索引了 Transactions 文档,这是 ES 生成的映射
"puretransactionsmodified" : {
"mappings" : {
"doc" : {
"properties" : {
"@timestamp" : {
"type" : "date"
},
"@version" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"__v" : {
"type" : "long"
},
"amount" : {
"type" : "long"
},
"createdAt" : {
"type" : "date"
},
"host" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"id" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"log_entry" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"logdate" : {
"type" : "date"
},
"mongo_id" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"receiver" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"receiverWalletId" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"sender" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"senderWalletId" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"status" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"total" : {
"type" : "long"
},
"totalFee" : {
"type" : "long"
},
"txId" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"type" : {
"type" : "text",
"fields" : {
"keyword" : {
"type" : "keyword",
"ignore_above" : 256
}
}
},
"updatedAt" : {
"type" : "date"
}
}
}
}
}
}
当我尝试使用同一个插件对两个集合进行索引以进行某些分析时
input {
mongodb {
uri => 'mongodb://**.**.**.***:27017/db'
placeholder_db_dir => '/home/jhon/Desktop
/userstransactions'
placeholder_db_name => 'logstash_sqlite.db'
collection => 'transactions'
batch_size => 202
parse_method => "simple"
}
mongodb {
uri => 'mongodb://**.**.**.***:27017/db'
placeholder_db_dir => '/home/jhon/Desktop
/userstransactions'
placeholder_db_name => 'logstash_sqlite.db'
collection => 'wallets'
batch_size => 202
parse_method => "simple"
}
}
它没有工作我所拥有的只是交易,我想在由提供的接收者的和字段下拥有,我reciever
是sender
这方面的新手,我也尝试过自己映射它但没有工作。transaction
name
user
解决方案
推荐阅读
- .net-core - 如何使用 MqttNET 在 azure 函数中使用 PEM 文件
- amazon-web-services - ElasticBeanstalk:无法在 GUI 中将环境类型更改为负载平衡?
- ssl - 我只想用wireshark的dissector功能,需要关闭Qt界面
- javascript - 如何捕获从服务器发送到我的 ws 侦听器的 ping/pong 帧?
- python - pandas.DataFrame.append 正在向 python 中的数据框添加新列
- python - 如何执行断言以验证项目是否在 Python 的字典列表中
- flutter - Flutter App 通过 url lancher 包打开 Linked In App
- go - 将 float 转换为 int 时的 Golang 奇怪行为
- python - 如何使用 Scikit-learn 计算多类问题的特异性
- javascript - 具有多个返回对象的复杂正则表达式可选搜索