40 lines
1001 B
PHP
Executable File
40 lines
1001 B
PHP
Executable File
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* @author Amasty Team
|
|
* @copyright Copyright (c) Amasty (https://www.amasty.com)
|
|
* @package Elastic Search Base for Magento 2
|
|
*/
|
|
|
|
namespace Amasty\ElasticSearch\Model\Adapter\Elasticsearch8;
|
|
|
|
use Amasty\ElasticSearch\Model\Adapter\SaveQueryBuilderInterface;
|
|
|
|
class SaveQueryBuilder implements SaveQueryBuilderInterface
|
|
{
|
|
public function execute(array $documents, string $indexName, string $action = self::BULK_ACTION_INDEX): array
|
|
{
|
|
$bulkArray = [
|
|
'index' => $indexName,
|
|
'body' => [],
|
|
'refresh' => true,
|
|
];
|
|
|
|
foreach ($documents as $id => $document) {
|
|
$bulkArray['body'][] = [
|
|
$action => [
|
|
'_id' => $id,
|
|
'_index' => $indexName
|
|
]
|
|
];
|
|
if ($action === self::BULK_ACTION_INDEX) {
|
|
$bulkArray['body'][] = $document;
|
|
}
|
|
}
|
|
|
|
return $bulkArray;
|
|
}
|
|
}
|