我需要以一致的方式存储可以访问信息的角色/组,但我不确定最佳方法是什么。
总结:我有两种文档“tweet”和“blog”:
tweet
级别,我存储了允许访问信息的组名称blog
更复杂,有元数据(title
,description
,nature
,...)但其中一些信息可以限制在某些组中用户(仅限admin
或logged_in
用户)使用Elasticsearch进行映射的最佳方式是什么?
截至今天,我最终得到的文件如下:
/tweet/455
{
id: 112,
ugroups: [ "restricted_user", "admin" ],
description: "foo",
},
{
id: 113,
ugroups: [ "anonymous" ]
description: "foo",
}
和
/blog/500
{
id: 5,
fields: [
{
"nature": {
"value": "foo",
"ugroup": [ "admin" ]
}
}
]
}
{
id: 6,
fields: [
{
"comment": {
"value": "foo",
"ugroup": [ "anonymous" ]
}
}
]
}
当用户想要在tweet
中搜索时,这很简单,我使用用户提交的字词构建term
查询,并将用户所属的组追加到此查询中。
但是如何制作一个会在不同级别上接受这个“ugroup”事物的查询?
理想情况下,我可以发出如下查询:
tweet
和tweet.ugroup: "anonymous"
blog
blog.fields.*.ugroup: "anonymous"
有没有办法编写这样的查询?