我正在尝试使用ElasticSearch来解决下面描述的问题:
我有一个用户配置文件索引,例如用户可以控制自己的配置文件(典型的网站场景):
index: users / profile / 123
{
"Id": 123,
"StaffNo": 8378,
"Name": "Joe bloggs",
"Tel": "12345",
"BloodGroup": "O",
"Addressline": "1 high street"
}
index: users / profile / 124
{
"Id": 124,
"StaffNo": 8312,
"Name": "Jane Fling",
"Tel": "87878",
"BloodGroup": "O-",
"Addressline": "2 church street"
}
我有一个每个用户的联系人列表索引,其中联系人列表所有者可以管理他/她自己的列表,并且只能将其他用户配置文件引用为只读(出于显而易见的原因)。
index: user_123 / contact / 1
{
"Name": "Seymor Totti",
"Tel": "12345",
"Addressline": "3 Maple Close"
}
index: user_123 / contact / 2
{
"Name": "Marsi Pann",
"Tel": "87878",
"Addressline": "4 Lancaster Road"
}
index: user_123 / contact / 3
{
"RefId": 124
}
我希望联系人列表所有者能够使用ES进行搜索并带回以下数据视图,因为这些字段同时出现在:
{
"Name": ,
"Tel": ,
"Addressline":
}
(有些个人资料元素不适合分享)
问题出现在配置文件所有者更改其配置文件的位置,我不想将该配置文件的副本复制到每个引用的联系人列表条目中,这是错误的,它应该只保留和更新在一个地方,然后引用。
我的问题是,是否可以使用别名和过滤器向用户提供简单搜索,以便仅搜索他/她自己的联系人列表,可以使用下面示例中显示的参考数据进行查看?如果是这样,请帮助我正确处理(有效)索引和查询的方法。
index / user_123 / contact / 1
{
"Name": "Seymor Totti",
"Tel": "12345",
"Addressline": "3 Maple Close"
}
index / user_123 / contact / 2
{
"Name": "Marsi Pann",
"Tel": "87878",
"Addressline": "4 Lancaster Road"
}
index / user_123 / contact / 3
{
"Name": "Jane Fling",
"Tel": "87878",
"Addressline": "2 church street"
}