由于SearchContextMissingException,Reindex失败

时间:2017-05-05 14:59:08

标签: elasticsearch reindex

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

2 个答案:

答案 0 :(得分:1)

来自github对this相关问题的评论,我认为可以通过更改批量大小来避免这种情况:

来自documentation

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

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

答案 1 :(得分:0)

对于拥有许多巨大文档的索引,我也遇到了同样的问题。我不得不将批次大小减小到10。(100和50都无效)。

这是最终有效的请求:

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

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