gpt4 book ai didi

mongodb - elasticsearch-mongo-river 如何更改数据字段

转载 作者:行者123 更新时间:2023-12-03 02:07:05 26 4
gpt4 key购买 nike

我使用 mongodb 将登录数据存储为一个集合,例如:

//userA 登录模块 mA:

{
"_id" : ObjectId("uuid 1"),
"user" : "userA",
"module" : "mA",
"collectDate" : ISODate("2013-03-18T08:25:11.601Z")
}

//userA 也登录模块 mB:
{
"_id" : ObjectId("uuid 2"),
"user" : "userA",
"module" : "mB",
"collectDate" : ISODate("2013-03-18T08:34:15.106Z")
}

//userB 登录模块 mB:
{
"_id" : ObjectId("uuid 3"),
"user" : "userB",
"module" : "mB",
"collectDate" : ISODate("2013-03-18T08:34:15.106Z")
}

然后使用map-reduce框架统计每个用户每天多少次
结果如下所示:
//计数为 2,因为 userA 登录 mA 和 mB
{
"_id" : {
"user" : "userA",
"date" : ISODate("2013-03-18")
},
"value" : {
"count" : 2.0
}
}

//计数为 1,因为 userB 登录 mB
{
"_id" : {
"user" : "userB",
"date" : ISODate("2013-03-18")
},
"value" : {
"count" : 1.0
}
}

问题是如何将减少的结果移动到 Elasticsearch ?
我希望 ES 中的数据显示为:
{
"user" : "userA",
"date" : ISODate("2013-03-18")
"count" : 2
},
{
"user" : "userB",
"date" : ISODate("2013-03-18")
"count" : 1
}

如何更改嵌套数据?

我使用以下命令:
curl -XPUT "es.server.com:9200/_river/Entity/_meta" -d '
{
"type":"mongodb",
"mongodb":{
"servers":[{"host":"mongodb.server.com","port":27017 }],
"options":{"secondary_read_preference":true},
"db":"udc","collection":"Entity"
},
"index":{
"name":"udc","type":"Entity"
}
}'

但是导入的数据不符合我的要求,如下图:
{
_index: udc
_type: user
_id: {
"user" : "userA" ,
"date" : {
"$date" : "2013-06-22T07:00:00.000Z"
}
}
_version: 1
_score: null
_source: {
_id: {
date: 2013-06-22T07:00:00.000Z
user: userA
}
value: {
count: 18
}
}
sort: [
user
]
}

最佳答案

看看scripts为河流。

你想要的是像

ctx.document.user= ctx.document._id.user;...;delete ctx.document._id; delete ctx.document.value;

关于mongodb - elasticsearch-mongo-river 如何更改数据字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24820010/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com