我正在尝试用 Elasticsearch 替换 Solr 设置。这是一个新的设置,还没有生产,所以我有很多空间来摆弄东西并让它们正常工作。
我有非常非常大量的数据。我正在索引一些实时数据并将其保存 7 天(通过使用 _ttl 字段)。我不在索引中存储任何数据(并禁用了 _source 字段)。我预计我的索引将稳定在200 亿行左右。我会将这些数据放入 2-3 个命名索引中。到目前为止,多达几十亿行的搜索性能是完全可以接受的,但索引性能是一个问题。
我对 ES 如何在内部使用分片感到有些困惑。我创建了两个 ES 节点,每个节点都有一个单独的数据目录,每个都有 8 个索引和 1 个副本。当我查看集群状态时,我只看到每个节点的一个分片和一个副本。每个节点不是保持多个索引在内部运行吗?(检查磁盘存储位置表明肯定只有一个 Lucene 索引存在)。-- 已解决,因为我的索引设置未从配置中正确获取。使用 API 创建索引并指定分片和副本的数量现在已经完全符合我的预期。
此外,我尝试运行同一个 ES 节点的多个副本(来自相同的配置),它识别出已经有一个副本正在运行并创建自己的工作区。这些新的节点实例似乎也只有一个磁盘索引。-- 现在每个节点实际上都在使用多个索引,具有多个索引的单个节点足以限制整个系统,所以这不是问题。
您何时启动额外的 Elasticsearch 节点,以获得最大的索引性能?我应该有很多节点,每个节点都运行 1 个索引 1 个副本,还是更少的节点运行大量索引?为了让单个节点做更多的工作,我的配置是否缺少一些东西?
另外:是否有任何指标可以知道仅 HTTP 节点何时过载?现在我只有一个节点专门用于 HTTP,但除了 CPU 使用率之外,我无法判断它是否正常。何时启动额外的 HTTP 节点并拆分索引软件以指向各个节点?