我在试图更换一个Solr的设置与Elasticsearch的中间。 这是一个新的安装程序,它目前还没有看到生产的,所以我有很多的空间来摆弄的东西,并让他们运作良好。
我有非常非常大的数据。 我索引的一些现场数据,并持有到其7天(通过使用_ttl场)。 我没有任何数据存储在索引(和残疾人的_source字段)。 我希望我的指数稳定在20十亿行。 我将会把这些数据转化为2-3命名索引。 搜索性能到目前为止高达数十亿行是完全可以接受的,但是索引性能是一个问题。
我有点困惑ES如何使用碎片内部。 我已经创建了两个ES节点,每个节点具有一个单独的数据目录,每个具有8个指标和1周的复制品。 当我看到集群状态,我只看到一个碎片,并为每个节点一个副本。 没有每个节点保持多个索引内部运行时? (检查在磁盘上的存储位置示出了绝对只有一个Lucene索引存在)。 - 解决,因为我的索引设置没有从配置回升正常。 创建使用API指数并指定碎片和副本的数量现在已经产生正是我会一直期待看到的。
此外,我试图运行相同的ES节点的多个副本(来自相同的配置),并承认已经有一个副本运行,并创建自己的工作区。 节点的这些新情况似乎也只有在磁盘上的一个指数。 - 现在每个节点实际上是用多个指标,其中许多指标单个节点是绰绰有余扼杀整个系统比较多,所以这是一个非问题。
你什么时候开始的附加Elasticsearch节点,最大索引性能? 如果我有很多节点,每个节点用1个索引1个副本,或者吨指标更少的节点上运行? 有什么事我和我的配置中缺少才能有单节点做更多的工作?
另外:是否有当只有HTTP节点超载知道任何指标? 现在我有专门仅对HTTP类型的一个节点,但除了CPU使用率,如果它做的好不好我不知道。 当是时候启动额外的HTTP节点和分裂你的索引软件指向各个节点?
让我们澄清的术语有点第一:
- 节点 :一个Elasticsearch实例中运行(Java进程)。 通常每个节点它自己的机器上运行。
- 集群 :以相同的群集名称一个或多个节点。
- 指数 :或多或少类似的数据库。
- 类型 :或多或少像一个数据库表。
- 碎片 :有效Lucene索引。 每一个指数是由一个或多个碎片。 甲碎片可以是一个主碎片(或简称碎片)或复制品 。
当你创建一个索引,你可以指定碎片和碎片每个副本的数数。 缺省值是5个主碎片和每分片1周的复制品。 碎片会自动均匀分布的簇上。 一个副本碎片将永远不会在同一台机器,其中相关的主碎片上进行分配。
您在集群的状态看是什么奇怪的,我建议使用使用来检查你的索引设置获取设置API 。 看起来你只配置了一个碎片,但无论如何,你应该会看到更多的碎片,如果你有一个以上的指数。 如果您需要更多的帮助,您可以张贴你的elasticsearch得到的输出。
有多少碎片,并使用副本真的取决于你的数据,你访问它们的方式,可用节点/服务器的数量。 这是对overallocate碎片,以便将它们重新分配的情况下,一点点的最佳实践,你增加更多的节点群集,因为一旦你创建了索引,你不能(现在)改变碎片的数量。 否则,你可以随时更改碎片的数量,如果你愿意做你的数据的完整重建索引。
每增加碎片配备了成本,因为每个碎片实际上是一个Lucene的实例。 你可以每个机器有碎片的最大数量实际上取决于可用的硬件和数据,以及。 很好的了解,具有每一个碎片或100块碎片一个指数100个指数确实是相同的,因为你必须在这两种情况下,100个Lucene的实例。
当然,在查询时,如果你想查询100个碎片elasticsearch需要查询他们都在为了得到正确的结果组成的单elasticsearch指数(除非你使用特定的路由你的文件,那么仅查询特定的碎片)。 这将有性能开销。
您可以轻松地检查你的集群,并使用节点的状态群集节点信息API ,通过它可以查了很多有用的信息,你需要为了知道自己的节点是否顺利或者没有运行。 更容易,有一对夫妇的插件,以检查通过良好的用户界面的信息(内部使用elasticsearch的API反正): 医务人员和bigdesk 。