【问题标题】:Reindex fail due to SearchContextMissingException由于 SearchContextMissingException 重新索引失败
【发布时间】:2017-05-05 14:59:08
【问题描述】:

我的公司正在使用 elasticsearch 2.3.4。 我们有一个包含 38 个 ES 节点的集群,最近我们在重新索引我们的一些数据时遇到了问题...... 我们在非常大的索引之前重新索引并且没有任何问题,但是最近,当尝试重新索引更小的索引(小于 10GB)时 - 我们得到:“SearchContextMissingException [No search context found for id [XXX]]”。 我们不知道是什么导致了这个问题或如何解决它。我们需要一些指导。 有没有人见过这个异常?

【问题讨论】:

  • 您是否正在使用 spark( hive 或任何使用 elasticsearch-hadoop 的东西)重新索引? elasticsearch spark几乎没有问题,但有同样的例外
  • 我正在使用elasticsearch的reindex API

标签: elasticsearch reindex


【解决方案1】:

对于包含许多大型文档的索引,我也遇到了同样的问题。我不得不将批量大小减少到 10。(100 和 50 都不起作用)。

这是最终奏效的请求:

POST _reindex?slices=5&refresh
{
  "source": {
    "index": "source_index",
    "size": 10
  },
  "dest": {
    "index": "dest_index"
  }
}

您还应该将切片设置为索引中的分片数。

【讨论】:

    【解决方案2】:

    来自 github cmets 关于this 相关问题,我认为这可以通过更改批量大小来避免:

    来自documentation

    默认情况下 _reindex 使用 1000 个滚动批次。您可以使用源元素中的 size 字段更改批次大小:

    POST _reindex
    {
      "source": {
        "index": "source",
        "size": 100
      },
      "dest": {
        "index": "dest",
        "routing": "=cat"
      }
    }
    

    【讨论】:

    • 但根据文档,大小字段不是批量大小,而是将重新索引到索引中的文档数
    • 这是“源”对象内的大小。顺便说一句,我是从文档中引用的:-)
    • 哦.. 抱歉,没看到。我会尝试并告诉你:)
    • 运气不好,对不起!但这似乎肯定是少数 PR 和他们回购中讨论的一部分,应该在更新的版本中进行修补。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-05-15
    • 1970-01-01
    • 1970-01-01
    • 2021-04-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多