у меня есть два мапинг файла и csv файл, надо их закинуть в ES, я много что пробовал, вот код миграции с последними поправками: <?php
use yii\db\Migration;
use yii\elasticsearch\Connection;
/**
-
Class m240923_123235_create_index_for_elasticsearch
/
class m240923_123235_create_index_for_elasticsearch extends Migration
{
/*-
{@inheritdoc}
*/
public function safeUp()
{
$elasticsearch = new Connection([
‘nodes’ => [
[‘http_address’ => ‘127.0.0.1:9200’],
// Добавьте другие узлы, если у вас есть кластер
],
]);// Проверяем, существует ли индекс
$indexName = ‘ul’;
if (!$elasticsearch->createCommand()->indexExists($indexName)) {
// Загружаем маппинг из файла
$mappingFile = ‘C:\gleb\ip1.json’;
$mapping = json_decode(file_get_contents($mappingFile), true);if ($mapping === null) { throw new \Exception("Failed to decode mapping file: $mappingFile"); } // Создаем индекс с маппингом $elasticsearch->createCommand()->createIndex($indexName, $mapping);
}
// Открываем файл для чтения
$filePath = ‘C:\OSPanel\domains\escompany.csv’;
$file = fopen($filePath, “r”);if ($file === false) {
throw new \Exception(“Failed to open file: $filePath”);
}// Читаем заголовки столбцов
$headers = fgetcsv($file);while (($line = fgetcsv($file)) !== false) {
// Проверяем, что количество элементов в строке совпадает с количеством заголовков
if (count($line) !== count($headers)) {
continue; // Пропускаем строку, если количество элементов не совпадает
}// Преобразуем строку CSV в ассоциативный массив $data = array_combine($headers, $line); // Добавляем документ в индекс $elasticsearch->createCommand()->insert($indexName, $data, uniqid());
}
// Закрываем файл
fclose($file);
}
public function safeDown()
{
$elasticsearch = new Connection([
‘nodes’ => [
[‘http_address’ => ‘127.0.0.1:9200’],
// Добавьте другие узлы, если у вас есть кластер
],
]);// Удаляем индекс $indexName = 'ul'; $elasticsearch->createCommand()->deleteIndex($indexName);
}
}
/*
// Use up()/down() to run migration code without a transaction.
public function up()
{}
public function down()
{
echo “m240923_123235_create_index_for_elasticsearch cannot be reverted.\n”;return false;
}
*/ -