コード例 #1
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;
 }
コード例 #2
0
 public function testSerialization()
 {
     $this->specify('checking serialization', function () {
         $actionName = \Nord\Lumen\Elasticsearch\Documents\Bulk\BulkAction::ACTION_INDEX;
         $metadata = ['_index' => 'foo', '_type' => 'bar', '_id' => 'baz'];
         $body = ['foo' => 'bar'];
         // Add two actions (same item twice)
         $action = new \Nord\Lumen\Elasticsearch\Documents\Bulk\BulkAction();
         $action->setAction($actionName, $metadata)->setBody($body);
         $this->query->addAction($action)->addAction($action);
         verify($this->query->toArray())->equals(['body' => [[$actionName => $metadata], $body, [$actionName => $metadata], $body]]);
     });
     $this->specify('checking serialization with _parent', function () {
         $actionName = \Nord\Lumen\Elasticsearch\Documents\Bulk\BulkAction::ACTION_INDEX;
         $metadata = ['_index' => 'foo', '_type' => 'bar', '_id' => 'baz', '_parent' => 'qux'];
         $body = ['foo' => 'bar'];
         // Add two actions (same item twice)
         $action = new \Nord\Lumen\Elasticsearch\Documents\Bulk\BulkAction();
         $action->setAction($actionName, $metadata)->setBody($body);
         $this->query->addAction($action)->addAction($action);
         verify($this->query->toArray())->equals(['body' => [[$actionName => $metadata], $body, [$actionName => $metadata], $body]]);
     });
 }