我正在考虑使用弹性搜索来加快查询速度。 到目前为止,我的数据已存储在关系数据库中。 像许多其他问题一样,我有一个问题,即关系数据库中的微小更改会导致非规范化弹性搜索中的大量更新。
例如,这里的简单角色和权限。 如果我想授予普通用户写CIRCLE数据的权限,则需要在类型= CIRCLE和role_id = 1001的弹性搜索中更新所有数据。这可能是数百万行。我认为角色admin用户每次执行更改后都需要等待几分钟,这是不可接受的。
是否有一种快速的方法来定义弹性搜索中的列类型,在该类型中,由于内容变化不大,因此以某种方式压缩了权限列的存储?例如“压缩的json”
-- DATA ----------------------------
id name type
------------------------------------
1 A BOX
2 B CIRCLE
3 C BOX
4 D CIRCLE
5.....
10000000 ABCDEF... CIRCLE
-- ROLE_ASSIGNMENT -----------------
role_id type read write
------------------------------------
1000 BOX yes yes
1000 CIRCLE yes yes
1001 BOX yes no
1001 CIRCLE yes no
-- ROLE ----------------------------
id name
------------------------------------
1000 admin
1001 normaluser
-- ELASTIC -------------------------
id name type rights
------------------------------------
1 A BOX rights : {
right : {
role_id = 1000,
read = yes,
write = yes
},
right : {
role_id = 1001,
read = yes,
write = no
},
}
2 B CIRCLE rights : {
right : {
role_id = 1000,
read = yes,
write = yes
},
right : {
role_id = 1001,
read = yes,
write = no
},
}
3 B BOX rights : {
right : {
role_id = 1000,
read = yes,
write = yes
},
right : {
role_id = 1001,
read = yes,
write = no
},
}
4 D CIRCLE rights : {
right : {
role_id = 1000,
read = yes,
write = yes
},
right : {
role_id = 1001,
read = yes,
write = no
},
}
......
100000000