php 如果文件已删除,请从ElasticSearch索引中删除

kyvafyod  于 2023-02-18  发布在  PHP
关注(0)|答案(2)|浏览(140)

我尝试编写一段代码,负责从elasticsearch索引中删除索引文件,我使用索引文件md5传递(文件名),设置为id值。需要确保在从文件夹中删除文件时,删除代码由id(md5)被执行。我写了部分脚本,但我理解它是不正确的,因为如果没有文件,那么md5将不会被创建,请帮助)

<?php

$path = __DIR__ . ("/uploads/Арне.pptx");
$filename = basename($path);
$md5 = md5_file($path);
print($md5); //Передаю переменную md5 в 'id' индексации elasticsearch 

//echo 'MD5-хеш файла ' . $filename . ': ' . md5_file($path);

if (empty(md5_file($path))) {//Провожу проверку, если md5 не        совпадает с именем файла в папке
    $params = [ //Произвожу удаление индекса из ES
        'index' => 'bower',
        'id' => $md5
    ];
    $respose = $client->delete($params);
} else {
    echo '' .  '  есть, файл существует';
}
siotufzp

siotufzp1#

您需要使用删除索引方法而不是删除文档:

$params = ['index' => 'bower_' . $md5];
$response = $client->indices()->delete($params);
jmo0nnb3

jmo0nnb32#

您可以关闭该主题,问题已解决。已解决问题:迭代uploads文件夹中的数组,并迭代elasticsearch数组id,然后使用array_diff,比较数组以排除不在uploads文件夹中但在elasticsearch索引中的文件

相关问题