我正在使用elasticsearch-php将批量数据导入Elasticsearch索引。如果那很重要,我正在使用6.4版。
现在我的数据没有改变,但是每次我对同一数据运行批量导入时,都会随机出现如下错误
{
"error" : { "root_cause" :
[{
"type":"json_parse_exception",
"reason":"Unrecognized token 'POST': was expecting ('true', 'false' or 'null')
## and sometimes like this
{
"error" : { "root_cause" :
[{
"type":"json_parse_exception",
"reason":"Unrecognized token 'Host': was expecting ('true', 'false' or 'null')
有时,该错误在备用运行中弹出。就像我将导入数据一样,它将正常运行而不会出现错误。我将删除索引,重新导入数据,然后就可以了。导入过程中,一段时间后,同样的错误会随机弹出。
我已经使用php脚本逐行验证了数据json,并且数据中没有json解析错误。
我不明白的是,每次运行的行为都不相同。我完全一无所知。我实际上应该在哪里解决这个问题?
怀疑可能是某些不可打印的字符导致了该问题,因此我添加了以下清除脚本。
$line = preg_replace('/[\x00-\x1F\x7F\xA0]/u', '', $json); // clean up of control characters if any
$lineData = json_decode($line, true);
但是随机误差仍然没有消失。可能是elasticsearch php库中的错误吗?