当前位置: 首页 > 知识库问答 >
问题:

何时启动附加的Elasticsearch节点?[关闭]

华俊弼
2023-03-14

我正在尝试用ElasticSearch替换Solr设置。这是一个新的设置,还没有看到生产,所以我有很多的空间来摆弄东西,使他们工作良好。

我有非常非常大量的数据。我正在索引一些实时数据并将其保存7天(通过使用_ttl字段)。我没有在索引中存储任何数据(并且禁用了_source字段)。我预计我的指数稳定在200亿行左右。我将把这些数据放入2-3个命名索引中。到目前为止,多达几十亿行的搜索性能是完全可以接受的,但是索引性能是一个问题。

对于ES如何在内部使用碎片,我有点困惑。我已经创建了两个ES节点,每个节点都有一个单独的数据目录,每个都有8个索引和1个副本。当我查看集群状态时,我只看到每个节点的一个碎片和一个副本。每个节点不都保持多个索引在内部运行吗?(检查磁盘上的存储位置显示肯定只有一个Lucene索引存在)。--解析,因为我的索引设置没有从配置中正确提取。使用API创建索引并指定碎片和副本的数量,现在生成的正是我所期望的结果。

另外,我尝试运行同一ES节点的多个副本(来自同一配置),它识别出已经有一个副本在运行,并创建自己的工作区。这些节点的新实例似乎在磁盘上只有一个索引。--现在每个节点实际上都使用多个索引,一个具有多个索引的单个节点就足以限制整个系统,所以这不是问题。

何时启动附加的Elasticsearch节点,以获得最大的索引性能?我应该有许多节点,每个节点运行一个索引一个副本,还是更少的节点运行吨索引?为了让单个节点完成更多的工作,我的配置是否缺少了什么?

还有:是否有任何指标可以用来知道什么时候只有HTTP的节点被重载了?现在,我有一个节点只用于HTTP,但除了CPU使用情况,我无法判断它是否正常。什么时候启动额外的HTTP节点并将索引软件拆分以指向各个节点?

共有1个答案

逄学潞
2023-03-14

我们先稍微澄清一下术语:

  • 节点:正在运行的Elasticsearch实例(一个Java进程)。通常每个节点都在自己的计算机上运行。
  • 群集:具有相同群集名称的一个或多个节点。
  • 索引:或多或少与数据库类似。
  • 类型:或多或少与数据库表类似。
  • 碎片:实际上是一个lucene索引。每个索引都由一个或多个碎片组成。碎片可以是主碎片(或只是碎片)或副本。

创建索引时,可以指定碎片数和每个碎片的副本数。默认值为5个主碎片和每个碎片1个副本。碎片会自动均匀地分布在集群上。副本碎片将永远不会分配在相关主碎片所在的同一台计算机上。

您在集群状态中看到的是奇怪的,我建议使用using the get settings api检查索引设置。看起来您只配置了一个分片,但无论如何,如果您有多个索引,您应该看到更多的分片。如果需要更多帮助,可以发布从ElasticSearch获得的输出。

使用多少碎片和副本实际上取决于您的数据、访问它们的方式以及可用节点/服务器的数量。最佳实践是稍微过度分配碎片,以便在集群中添加更多节点时重新分配碎片,因为创建索引后(目前)无法更改碎片的数量。否则,如果您愿意对数据进行完整的重新索引,则可以始终更改碎片的数量。

每增加一个碎片都有代价,因为每个碎片实际上都是一个Lucene实例。每台机器可以拥有的最大碎片数实际上取决于可用的硬件和您的数据。很高兴知道100个索引和100个分片,或者一个索引和100个分片实际上是一样的,因为在这两种情况下都有100个lucene实例。

当然,在查询时,如果您想查询由100个碎片组成的单个elasticsearch索引,elasticsearch将需要查询所有这些索引以获得正确的结果(除非您为文档使用了特定的路由,然后只查询特定的碎片)。这会带来性能成本。

您可以使用cluster nodes Info API轻松地检查集群和节点的状态,通过该API您可以检查大量有用的信息,这些信息都是您了解节点运行是否顺畅所需的。更简单的是,有两个插件可以通过一个很好的用户界面(内部使用elasticsearch API)来检查这些信息:paramedic和BigDesk。

 类似资料:
  • 问题内容: 我正在尝试用Elasticsearch替换Solr设置。这是一个新的设置,尚未投入生产,因此我有很大的空间来摆弄各种东西并使它们运转良好。 我有非常大量的数据。我正在索引一些实时数据并将其保留7天(通过使用_ttl字段)。我不在索引中存储任何数据(并禁用了_source字段)。我预计我的指数将稳定在 200亿 行左右。我将把这些数据放入2-3个命名索引中。到目前为止,多达数十亿行的搜索

  • 问题内容: 我想使用新配置重新启动elasticsearch节点。正常关闭节点的最佳方法是什么? 关闭进程是关闭服务器的最佳方法,还是我可以使用一些神奇的URL关闭节点? 问题答案: 更新的答案。 API已在elasticsearch 2.x中删除。 一些选项: 在您的终端(基本上是开发模式)中,只需键入“ Ctrl-C” 如果您以守护程序()的身份启动它,请找到PID并终止该进程:将彻底关闭El

  • 问题内容: 我想使用文件浏览器创建文本编辑器,所以当我启动应用程序时,我想在程序中在JTree上添加节点,以便它向我显示所有文件和文件夹,例如在“我的文档”文件夹中,并允许我访问这些文件和文件夹(尤其是文件夹)。我试图从这个例子中弄清楚安德鲁·汤普森是如何做到的, 但是我失败了。我使用此示例为“我的文档”中的所有文件和文件夹创建了节点 。但这就是全部,当单击表示文件夹的节点之一时,我无法弄清楚如何

  • 问题内容: 我知道不建议使用嵌入式Elasticsearch。我只是为了测试而尝试。 我正在尝试启动嵌入式Elasticsearch节点,并从以下elasticsearch.yml提供配置 我使用的是es 5.1.1,我的代码启动嵌入式节点如下。 我得到以下跟踪。 我也尝试过,但到目前为止还没有运气。它在设置时有效,但我想使用http rest api进行测试。 PS:在实现嵌入式es时,我一直在

  • 问题内容: 我有一个Maven项目,运行命令 mvn后,安装 所有项目以及模块编译并成功复制到本地存储库。但是现在我想在tomcat6中运行生成的Web应用程序。客户端为tomcat提供了一些参数,例如一旦项目启动,这些参数将在内部使用。但是我不知道如何在tomcat6中设置这些附加参数。下面是我的开发环境 操作系统= Windows Tomcat = Tomcat 6.0.27 请帮我? 问题答

  • 编辑:根据Jim Rush的建议,我现在使用rc.local而不是init.d direclty来运行永远启动启动。 你知道为什么这不起作用吗?我在覆盆子皮B+上运行覆盆子。我已经运行了/etc/init.d kuuyi start和forever kicks并启动了该应用程序。只是启动机器后就不会发生了。 在这方面的任何帮助都是非常感谢的,我在这方面就像乳制品日后的旧奶酪布一样筋疲力尽。