在 ElasticSearch 中创建多个索引

问题描述 投票:0回答:1

存在一个收集科学文献数据库的网站,用户可以在其中搜索并重定向到这些数据库。该数据集包含大约 16,000 个文档(在本例中为数据库),每个文档都可以使用各种元数据进行注释(例如关键字主题类别作者等)。然而,超过 300 家机构也参与了该收集,每个机构都能够单独覆盖和扩展每个数据集的元数据。机构添加的附加元数据仅显示在网站的机构特定视图中。如果用户不隶属于某个机构,则会显示一般元数据。数据存储在 PostgreSQL 数据库中。

我考虑通过 Logstash 在 ElasticSearch 中为每个机构创建一个单独的索引,其中包含全局元数据和机构特定元数据的组合。此外,还将有一个专门用于一般元数据的全局索引。根据用户登录的机构,将搜索相应的索引。

这种方法有意义吗?或者可以将所有内容都放入一个大索引中吗?我已经将 Logstash 配置为仅查询和索引全局数据。如果我想创建多个索引,是否需要从 bash 脚本调用 Logstash 配置,循环遍历机构并每次传递机构 ID?

提前非常感谢您!

elasticsearch logstash
1个回答
0
投票

我认为 16k 的文档相对较小。例如,我正在使用包含 2000 万个文档的索引。如果指数持续增长,管理就会变得非常困难。

根据您的情况,您可以使用多个管道。 在多个管道中,您应该在logstash的pipeline.yml中定义管道的名称。例如: 管道.yml

- pipeline.id: my-pipeline_1
  path.config: "/etc/path/to/institution-1.conf"
  pipeline.workers: 3
- pipeline.id: my-pipeline_2
  path.config: "/etc/path/to/institution-2.conf"
  queue.type: persisted

然后在 config 文件夹下为每个管道创建一个管道(.conf)文件。

institution-1.conf
institution-2.conf
.
.
.

对于每个管道,您应该在 .conf 管道中定义输入、过滤器和输出插件,以便摄取数据。

但是你有 300 个机构,所以我不确定这是否合适,因为你需要创建 300 个管道,而且我不知道它们将来是否会增长。

如果数据稳定并且不增长,您可以创建一个一个大索引并定义一个字段,例如“institution: ..”并相应地摄取数据。然后您可以过滤您的客户端代码。

© www.soinside.com 2019 - 2024. All rights reserved.