Yii2 ElasticSearch Bulk işlem

Merhaba
işinize yararmı bilmem ama elastik search ile çalışanlar için bulk işlem yapabilmek önemli.

yii2::elasticsearch kullananlar

Command.php içerisine eklesinler

[sourcecode language=”php”]/**
* Inserts a bulk action
* @param string $index
* @param string $type
* @param string|array $data json string or array of data to store
* @param array $options
* @return mixed
* @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-bulk.html
*/
public function bulk($index, $type, $data, $options = []) {

if (empty($data)) {
$body = ‘{}’;
} else if(is_array($data)){

foreach ($data[“body”] as $key => $value) {
$body.=Json::encode($value).”\n”;
}
} else{
$body = $data;
}

return $this->db->post([$index, $type,”_bulk”], $options, $body);
}[/sourcecode]

 

//kullanım şekli

[sourcecode language=”php”]
$data=[];
foreach($datas as $tweet ){

$data[‘body’][] = array(
‘index’ => array(
‘_id’ => $tweet[“tweet_id”]
)
);

$data[‘body’][] = array(
‘doc’ => $tweet
);
}

//ve datayı ekle

$command->bulk(“my_index”, “tweet”, $data, null);

[/sourcecode]

Kolay gelsin

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir