コード例 #1
0
 public function testActionHandling()
 {
     $this->specify('testing item handling', function () {
         verify($this->query->isReady())->false();
         for ($i = 0; $i < self::BULK_SIZE; $i++) {
             $this->query->addAction(new \Nord\Lumen\Elasticsearch\Documents\Bulk\BulkAction());
         }
         verify($this->query->hasItems())->true();
         verify($this->query->isReady())->true();
         $this->query->reset();
         verify($this->query->hasItems())->false();
     });
 }
コード例 #2
0
 /**
  * @inheritdoc
  */
 public function handle()
 {
     $this->info('Indexing data ...');
     $service = $this->getElasticsearchService();
     $data = $this->getData();
     $bar = $this->output->createProgressBar(count($data));
     $bulkQuery = new BulkQuery($this->getBulkSize());
     foreach ($data as $item) {
         $action = new BulkAction();
         $meta = ['_index' => $this->getIndex(), '_type' => $this->getType(), '_id' => $this->getItemId($item)];
         if (($parent = $this->getItemParent($item)) !== null) {
             $meta['_parent'] = $parent;
         }
         $action->setAction(BulkAction::ACTION_INDEX, $meta)->setBody($this->getItemBody($item));
         $bulkQuery->addAction($action);
         if ($bulkQuery->isReady()) {
             $service->bulk($bulkQuery->toArray());
             $bulkQuery->reset();
         }
         $bar->advance();
     }
     if ($bulkQuery->hasItems()) {
         $service->bulk($bulkQuery->toArray());
     }
     $bar->finish();
     $this->info("\nDone!");
     return 0;
 }