ElasticSearch索引引用文档

时间:2016-06-23 10:41:50

标签: elasticsearch indexing documents

我正在尝试使用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"
}

0 个答案:

没有答案