我正在尝试用Elasticsearch替换Solr设置。这是一个新的设置,它还没有看到生产,所以我有很大的空间来摆弄事情,并使他们工作良好。
我有大量的数据。我正在为一些实时数据建立索引,并将其保存7天(使用_ttl字段)。我不会在索引中存储任何数据(并禁用_source字段)。我预计我的索引将稳定在200亿行附近。我将把这些数据放入2-3个命名索引中。到目前为止,有数十亿行的搜索性能是完全可以接受的,但是索引性能是一个问题。
我对ES如何在内部使用碎片感到有点困惑。我已经创建了两个ES节点,每个节点都有一个单独的数据目录,每个节点都有8个索引和1个副本。当我查看集群状态时,我只看到了每个节点的一个碎片和一个副本。不是每个节点都在内部运行多个索引吗?(检查磁盘上的存储位置表明,绝对只有一个Lucene索引)。-解析,因为我的索引设置没有从配置中正确提取。使用API创建索引并指定碎片和副本的数量,现在已经产生了我希望看到的结果。
另外,我尝试运行同一个ES节点的多个副本(来自同一配置),它识别已经有一个副本正在运行,并创建自己的工作区。这些新的节点实例似乎也只有一个索引在磁盘上。--现在每个节点实际上都在使用多个索引,一个具有多个索引的节点就足以控制整个系统,所以这不是一个问题。
何时开始额外的Elasticsearch节点,以获得最大的索引性能?我应该让多个节点运行一个索引1副本,还是少一些具有大量索引的节点?为了让单个节点做更多的工作,我在配置中缺少了什么吗?
另外:是否有任何度量来知道什么时候只有HTTP节点被重载?现在,我只有一个节点专门用于HTTP,但是除了CPU的使用之外,我无法判断它是否正常。何时该启动额外的HTTP节点并将索引软件拆分为指向各个节点?
发布于 2012-09-13 20:16:31
让我们先澄清一下术语:
创建索引时,可以指定每个碎片的碎片数和副本数量。默认为每个碎片5个主碎片和1个副本。碎片自动均匀地分布在集群上。副本碎片永远不会分配到相关的主碎片所在的同一台机器上。
您在集群状态中看到的是奇怪的,我建议使用使用获取设置API来检查索引设置。看起来您只配置了一个碎片,但无论如何,如果您有多个索引,您应该会看到更多的碎片。如果需要更多帮助,可以发布从elasticsearch获得的输出。
使用多少碎片和副本实际上取决于您的数据、访问它们的方式以及可用节点/服务器的数量。最好的做法是稍微分配一些碎片,以便在集群中添加更多节点时重新分配它们,因为创建索引后不能(目前)更改碎片的数量。否则,如果愿意对数据进行完整的重新索引,则始终可以更改碎片的数量。
每个附加的碎片都有一个成本,因为每个碎片实际上都是Lucene实例。每台机器可以拥有的碎片的最大数量实际上取决于可用的硬件和数据。很高兴知道,每一个碎片都有100个索引,或者有100个碎片的索引实际上是一样的,因为在这两种情况下都有100个lucene实例。
当然,在查询时,如果您想要查询由100个碎片组成的单个elasticsearch索引,那么elasticsearch需要全部查询,以获得适当的结果(除非您为文档使用了特定的路由,然后只查询一个特定的碎片)。这将有一个性能成本。
您可以使用集群节点信息API轻松地检查集群和节点的状态,通过它可以检查许多有用的信息,这些信息都是您需要的,以便知道节点运行是否顺利。更简单的是,有几个插件可以通过一个很好的用户界面(反正在内部使用elasticsearch )来检查这些信息:辅助医务人员和大办公桌。
https://stackoverflow.com/questions/12409438
复制相似问题