如何尽可能地隔离Elasticsearch索引和搜索路径

时间:2018-06-13 12:42:13

标签: elasticsearch lucene elasticsearch-5

我打算尽可能地隔离Elasticsearch索引和搜索请求,以避免索引过程中出现任何不必要的延迟。没有Elasticsearch专用搜索节点或索引节点这样的东西。但是,我想知道以下情况是否合适。据我所知,我不能完全将搜索请求与索引请求隔离开,因为最后两个命中ES数据节点,但我认为这可以帮助一点:

  • 很少有Elasticsearch协调器节点(没有主/数据)来处理搜索请求并将它们路由到相应的数据节点。因此,为了创建搜索客户端来处理搜索请求,将仅使用协调器节点URL。
  • 直接使用Elasticsearch数据节点作为索引路径,并忽略协调器节点以进行索引。

在这种情况下,接收数据节点将充当用于索引路径的协调器节点,并且专用协调器节点将用于路由到数据节点上的副本。可以最小化由于搜索路由而导致的数据节点不必要的负载。

我想知道是否有另一种方法可以在更高级别提供隔离,或者我也疯狂不使用协调节点作为索引路径。

P.S:我的用例是重型索引和轻/中搜索

1 个答案:

答案 0 :(得分:0)

您无法将索引和搜索操作分开,索引将在主分片上写入,然后在副本分片上写入,而搜索只能在主分片上进行。

如果你关心写性能:

  • 没有副本
  • refresh_interval> 30s,保持分析仪简单
  • 很多分片(跨数据节点)
  • 直接在数据节点上发送插入/更新查询
  • 尝试使用热/冷数据架构(热/冷索引)

协调器节点根本无法提高搜索性能,这取决于您的工作负载(aggs等......)。

通常,所有调整内容都取决于您的数据和使用情况,您必须在索引编制和搜索性能之间找到良好的平衡,使用_node/stats端点查看最新情况。