Elasticsearch. Добавление данных

Добавление данных в Elasticsearch на примере создания сотрудника компании.

Примеры для:

Команда:

PUT /megacorp/employee/1 {
    "first_name" : "John",
    "last_name" :  "Smith",
    "age" :        25,
    "about" :      "I love to go rock climbing",
    "interests": [ "sports", "music" ]
}

CURL:

$curl -XPUT 'http://localhost:9200/megacorp/employee/133434 ' -d '
{
      "name":"John",
      "last_name" :"Smith",
      "age" :25,
      "about" :"I love to go rock climbing",    
      "interests": [ "sports", "music" ]
}'

PHP:

Для добавления данных, нужно заполнить три ключа массива

index - аналог имени базы данных в MySQL.

type - аналог таблицы в MySQL.

body - документ. Аналог строки записи в таблице MySQL.

require 'vendor/autoload.php'; 
$client = Elasticsearch\ClientBuilder::create()->build();        
$params = [
    "index" => "megacorp",
    "type"  => "employee",
    "body"  => [
        "first_name" => "John", 
        "last_name"  => "Smith",              
        "age"        => "25",         
        "about"      => 'I love to go rock climbing',   
        "interests"  => [ "sports", "music"]            
     ]
];
$response = $client->index($params);
print_r($response); // Выводим результат индексирования.

Yii2:

В Yii2 работа с elasticsearch осуществляется при помощи класса yii\elasticsearch\ActiveRecord

Создаем модель. И объявляем класс с минимальными параметрами:

use yii\elasticsearch\ActiveRecord;
class Megacorp extends ActiveRecord
{  
    public static function index() 
    {  
        return 'megacorp'; 
    } 
    public static function type() 
    {  
        return 'employee';  
    }

    
    /**
     Атрибуты. Важно указать. Иначе, данные не сохранятся.
    */
    public function attributes()
    {
        return [            
            "first_name",
            "last_name",
            "age" ,
            "about" ,
            "interests" 
          ];
      }
   /**
    Правила. Важно указать. Иначе, данные не сохранятся.
    Я, поставил всем атрибутам правила как безопасные.
    В можете указать любые другие, которые вам необходимы.
    */
    public function rules() 
    {   
        return [
            [$this->attributes(), 'safe']  
        ];
    }
}

Сохраняем данные (индексируем в терминологии elasticsearch):

$model = new Megacorp();
$model->attributes = [  
    "first_name" => "John",
    "last_name"  => "Smith",
    "age"        => "25",
    "about"      => 'I love to go rock climbing',
   "interests"  => [ "sports", "music"]
];

$model->save();

Дополнительно

Предыдущая часть: Elasticsearch. Что такое Elasticsearch и как его установить

Следующая часть: Пример извлечения (получения) данных в Elasticsearch с помощью CURL, PHP, Yii2