【发布时间】:2012-09-06 17:29:02
【问题描述】:
我正在尝试用 Elasticsearch 替换 Solr 设置。这是一个新的设置,还没有投入生产,所以我有很多空间来摆弄东西并让它们正常工作。
我有非常非常大量的数据。我正在索引一些实时数据并将其保存 7 天(通过使用 _ttl 字段)。我不在索引中存储任何数据(并禁用了 _source 字段)。我预计我的索引将稳定在 200 亿 行左右。我会将这些数据放入 2-3 个命名索引中。到目前为止,多达几十亿行的搜索性能是完全可以接受的,但索引性能是一个问题。
我对 ES 如何在内部使用分片感到有些困惑。我创建了两个 ES 节点,每个节点都有一个单独的数据目录,每个都有 8 个索引和 1 个副本。当我查看集群状态时,我只看到每个节点的一个分片和一个副本。每个节点不是保持多个索引在内部运行吗? (检查磁盘存储位置显示肯定只有一个 Lucene 索引存在)。 -- 已解决,因为我的索引设置未从配置中正确获取。使用 API 创建索引并指定分片和副本的数量现在已经完全符合我的预期。
另外,我尝试运行同一个 ES 节点的多个副本(来自相同的配置),它识别出已经有一个副本正在运行并创建自己的工作区。这些新的节点实例在磁盘上似乎也只有一个索引。 -- 现在每个节点实际上都在使用多个索引,具有多个索引的单个节点足以限制整个系统,所以这不是问题。
您什么时候启动额外的 Elasticsearch 节点,以获得最大的索引性能?我应该有很多节点,每个节点都运行 1 个索引 1 个副本,还是更少的节点运行大量索引?为了让单个节点做更多的工作,我的配置是否缺少一些东西?
另外:是否有任何指标可以知道仅 HTTP 节点何时过载?现在我只有一个节点专门用于 HTTP,但除了 CPU 使用率之外,我无法判断它是否正常。何时启动额外的 HTTP 节点并拆分索引软件以指向各个节点?
【问题讨论】:
-
请注意:您可以假设我有足够数量的系统来为我需要运行的许多 ES 实例提供足够的 CPU、内存和磁盘 IO。
-
嗨@gdm,既然您已经启动并运行了多个分片和一个副本的集群,您是否发布了有关您的ES 性能的任何统计数据?我真的很想看看你的节点规格和不同类型查询的响应时间。我有十亿个文档,但你的文档要大得多,而且很有趣:)谢谢。
标签: elasticsearch sharding bigdata