使用Elasticsearch为1000万个文档编制索引

时间:2014-04-23 14:55:46

标签: php elasticsearch elastica

我尝试使用Elastica API将1000万个文档编入我的Elasticsearch索引。 我在具有16G RAM和8个内核的Ubuntu服务器上运行我的脚本。

到目前为止,我无法为超过250000个文档编制索引。我的脚本正在破坏并返回一个未知错误。

有人可以向我描述确保索引此数据量的步骤吗?

我发现了一个类似于我here的问题,但答案对我来说似乎不太清楚。

编辑:

我运行了Nate here建议的索引脚本,我得到了以下输出:

close index
{
 "acknowledged" : true
}
refresh rate
{
 "acknowledged" : true
}
merge policy
{
 "acknowledged" : true
}
replicas
{
 "acknowledged" : true
}
flush
{
 "acknowledged" : true
}
buffer
{
 "acknowledged" : true
}
{
 "acknowledged" : true
}

PS: 我稍微修改了脚本以提高输出的可见性

编辑2: 我已经从Elastica切换到使用elasticsearch-jdbc-river,现在它的索引大约有5百万,但仍然不是整个数据库。

Here是河流的json文件,将它放在Elasticsearch上的脚本文件是here.

1 个答案:

答案 0 :(得分:1)

我很久以前就已经解决了这个问题,但我忘了写一个答案。

我已经考虑过应用elasticsearch-jdbc-river的第二个解决方案,从现在起我写这个答案的时候已经弃用了。

然而,当时河流的问题在于考虑到默认的query_timeout选项,考虑到我正在使用的升沉SQL查询,默认情况下这似乎是不够的。在query_timeout过去之后,该选项终止了该进程。

我增加了query_timeout值,它解决了我的问题。