原文地址: https://www.elastic.co/guide/cn/elasticsearch/guide/current/faking-it.html, 版权归 www.elastic.co 所有
英文版地址: https://www.elastic.co/guide/en/elasticsearch/guide/current/faking-it.html
英文版地址: https://www.elastic.co/guide/en/elasticsearch/guide/current/faking-it.html
请注意:
本书基于 Elasticsearch 2.x 版本,有些内容可能已经过时。
本书基于 Elasticsearch 2.x 版本,有些内容可能已经过时。
利用别名实现一个用户一个索引 (Faking Index per User with Aliases)edit
为了保持设计的简洁,我们想让我们的应用认为我们为每个用户都有一个专门的索引 —— 或者例子中的每个论坛一个 —— 尽管实际上我们用的是一个大的共享索引(shared index)。
因此,我们需要一种方式将 routing
值及过滤器隐含于 forum_id
中。
索引别名允许我们这样做。当你将一个别名与一个索引关联时,可以指定一个过滤器和一个路由值:
PUT /forums/_alias/baking { "routing": "baking", "filter": { "term": { "forum_id": "baking" } } }
现在我们可以将别名baking
视为一个单独的索引。索引至别名baking
的文档会自动地应用我们自定义的路由值:
对别名baking
的查询只会在自定义路由关联的分片上运行,并且结果也自动按照我们指定的过滤器进行了过滤:
GET /baking/post/_search { "query": { "match": { "title": "ginger nuts" } } }
当对多个论坛进行搜索时可以指定多个别名: