Elasticsearch:如何使用映射索引数千个文件?

时间:2017-02-11 08:23:05

标签: php elasticsearch indexing mapping metadata

我正在尝试构建一个搜索引擎。我正在使用Php和elasticsearch。 无法手动执行base64编码并索引文件夹中的每个文件。 这些文件大多是Word或PDF格式。我已经添加了我最近尝试实现此目的的代码,但它没有用。

<?php
    $dir_path="yellow";
    require 'vendor/autoload.php';
    $client= Elasticsearch\ClientBuilder::create()->build();
    if(is_dir($dir_path))
    {
        $files=opendir($dir_path);
        if($files)
        {
            while(($file_name= readdir($files))!== FALSE)
            {
                if($file_name!=="."&$file_name!=="..")
                {
        $params= [
        'index'=>'try',
        'type'=>'mytype',
        'body'=>[   
        'my_attachment' =>[
          "cv" => base64_encode(file_get_contents("$dir_path/$file_name"))  ]   ]
        ];

    $response= $client->index($params);
    echo $response;
                }
            }
        }
    }
?>

此代码返回“注意:数组到字符串转换”错误,而不是生成确认。 提前致谢

1 个答案:

答案 0 :(得分:0)

尝试替换

'body'=>[   
        'my_attachment' =>[
          "cv" => base64_encode(file_get_contents("$dir_path/$file_name"))  ]   ]

'body' => [
    'my_attachment' => 
     base64_encode(file_get_contents("$dir_path/$file_name"))
]