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 с помощью CURL, PHP, Yii2
- Пример извлечения (получения) данных в Elasticsearch с помощью CURL, PHP, Yii2
- Пример поиска в Elasticsearch с помощью CURL, PHP, Yii2
- Пример управления индексами в Elasticsearch с помощью CURL, PHP, Yii2
- Параметры полей
Предыдущая часть: Elasticsearch. Что такое Elasticsearch и как его установить
Следующая часть: Пример извлечения (получения) данных в Elasticsearch с помощью CURL, PHP, Yii2
Комментарии
public static function index()
Ответить{
return 'megacorp';
}
public static function type()
{
return 'employee';
}
public static function index()
Ответить{
return 'megacorp';
}
public static function type()
{
return 'employee';
}
Для чего нужны эти два метода?
Первая функция указывает индекс (в понимании elasticsearch - это аналог базы данных в MySQL).
ОтветитьВторая функция указывает тип (похоже на имя таблицы в MySQL)
[requestMethod] => POST
[requestUrl] => http://127.0.0.1:9200/megacorp/employee?op_type=create [requestBody] => {"first_name":"John","last_name":"Smith","age":"25","about":"I love to go rock climbing","interests":["sports","music"]} [responseCode] => 400 [responseHeaders] => Array (
[content-type] => application/json; charset=UTF-8 [content-length] => 311 )
[responseBody] => Array (
[error] => Array (
[root_cause] => Array (
[0] => Array (
[type] => action_request_validation_exception
[reason] => Validation Failed: 1: an id must be provided if version type or value are set; )
)
[type] => action_request_validation_exception
[reason] => Validation Failed: 1: an id must be provided if version type or value are set; )
[status] => 400 )
)Ответить