我的公司正在使用elasticsearch 2.3.4。 我们有一个包含38个ES节点的集群,我们最近一直在重新索引我们的一些数据... 我们在非常大的索引之前重新编制索引并且没有问题,但是最近,当尝试重新索引更小的索引(小于10GB)时,我们得到:“SearchContextMissingException [找不到id [XXX]]的搜索上下文”。 我们不知道是什么导致了这个问题或如何解决它。我们想要一些指导。 有人见过这个例外吗?
答案 0 :(得分:1)
来自github对this相关问题的评论,我认为可以通过更改批量大小来避免这种情况:
默认情况下,_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"
}
}
您还应该将切片设置为索引中具有的分片数。