当前位置: 首页>>代码示例>>PHP>>正文


PHP Client::bulk方法代码示例

本文整理汇总了PHP中Elasticsearch\Client::bulk方法的典型用法代码示例。如果您正苦于以下问题:PHP Client::bulk方法的具体用法?PHP Client::bulk怎么用?PHP Client::bulk使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在Elasticsearch\Client的用法示例。


在下文中一共展示了Client::bulk方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的PHP代码示例。

示例1: flush

 /**
  * Flushes the items in this Bulk object to Elasticsearch. If there are no items, this method does nothing.
  *
  * (In particular, note that if no items are in the Bulk object, the bulk flush event is not fired.)
  *
  * @throws PartialFailureException
  */
 public function flush()
 {
     // We might have nothing to do
     if ($this->getItemCount() == 0) {
         return;
     }
     $this->dispatchEvent(Events::BULK_FLUSH, new BulkFlushEvent($this->index, $this->type, $this->getItemCount()));
     $params = ['index' => $this->index, 'type' => $this->type, 'body' => $this->itemList];
     $result = $this->elasticSearch->bulk($params);
     if (count($result['items']) != $this->itemCount) {
         $expected = $this->itemCount;
         $actual = count($result['items']);
         throw new PartialFailureException("The wrong number of items was stored; expected {$expected}, but stored {$actual}");
     }
     if (boolval($result['errors'])) {
         $errorList = [];
         foreach ($result['items'] as $item) {
             if ($item['index']['status'] < 200 || $item['index']['status'] >= 300) {
                 $errorList[] = $item;
             }
         }
         throw new PartialFailureException("Some items failed. " . json_encode($errorList));
     }
     $this->clear();
 }
开发者ID:CascadeEnergy,项目名称:php-elasticsearch,代码行数:32,代码来源:Bulk.php

示例2: setUp

 /**
  * {@inheritdoc}
  */
 protected function setUp()
 {
     parent::setUp();
     $this->client = ClientBuilder::create()->build();
     $this->deleteIndex();
     $this->client->indices()->create(array_filter(['index' => self::INDEX_NAME, 'mapping' => $this->getMapping()]));
     $bulkBody = [];
     foreach ($this->getDataArray() as $type => $documents) {
         foreach ($documents as $id => $document) {
             $bulkBody[] = ['index' => ['_index' => self::INDEX_NAME, '_type' => $type, '_id' => $id]];
             $bulkBody[] = $document;
         }
     }
     $this->client->bulk(['body' => $bulkBody]);
     $this->client->indices()->refresh();
 }
开发者ID:saimaz,项目名称:ElasticsearchDSL,代码行数:19,代码来源:AbstractElasticsearchTestCase.php

示例3: commit

 /**
  * Flushes the current query container to the index, used for bulk queries execution.
  */
 public function commit()
 {
     $this->isReadOnly('Commit');
     $this->bulkQueries = array_merge($this->bulkQueries, $this->bulkParams);
     $this->client->bulk($this->bulkQueries);
     $this->flush();
     $this->bulkQueries = [];
 }
开发者ID:spaivaras,项目名称:ElasticsearchBundle,代码行数:11,代码来源:Manager.php

示例4: it_adds_multiple_searchable_objects_to_the_search_index

 public function it_adds_multiple_searchable_objects_to_the_search_index(Client $elasticsearch, Searchable $searchableObject)
 {
     $searchableObjects = [$searchableObject];
     $params = [];
     $params['body'][] = ['index' => ['_id' => $this->searchableId, '_index' => $this->indexName, '_type' => $this->searchableType]];
     $params['body'][] = $this->searchableBody;
     $elasticsearch->bulk($params)->shouldBeCalled();
     $this->upsertToIndex($searchableObjects);
 }
开发者ID:spatie,项目名称:searchindex,代码行数:9,代码来源:ElasticsearchSpec.php

示例5: insertDocuments

 /**
  * Insert an array of documents.
  *
  * @param array $docs
  */
 public function insertDocuments(array $docs)
 {
     $params = [];
     while (!empty($docs)) {
         $doc = array_shift($docs);
         $params['body'][] = ['index' => ['_index' => env('ES_INDEX'), '_type' => $this->type, '_id' => uniqid()]];
         $params['body'][] = $doc;
         $results = $this->client->bulk($params);
     }
 }
开发者ID:HackTheDinos,项目名称:team-squiz-bone-explorer,代码行数:15,代码来源:Search.php

示例6: index

 /**
  * @param ShopIndex $index
  * @param int[] $ids
  */
 public function index(ShopIndex $index, $ids)
 {
     if (empty($ids)) {
         return;
     }
     $blog = $this->provider->get($ids);
     $remove = array_diff($ids, array_keys($blog));
     $documents = [];
     foreach ($blog as $row) {
         $documents[] = ['index' => ['_id' => $row->getId()]];
         $documents[] = $row;
     }
     foreach ($remove as $id) {
         $documents[] = ['delete' => ['_id' => $id]];
     }
     if (empty($documents)) {
         return;
     }
     $this->client->bulk(['index' => $index->getName(), 'type' => 'blog', 'body' => $documents]);
 }
开发者ID:shobcheye,项目名称:devdocs,代码行数:24,代码来源:BlogDataIndexer.php

示例7: copyData

 private function copyData(Client $client, $source_index, $destination_index, $batch_size)
 {
     $search_params = array("search_type" => "scan", "scroll" => "30s", "size" => 50, "index" => $source_index, "body" => array("query" => array("match_all" => array())));
     $search_responses = new SearchResponseIterator($client, $search_params);
     foreach ($search_responses as $search_response) {
         $index_params = array();
         $index_params['index'] = $destination_index;
         foreach ($search_response['hits']['hits'] as $hit) {
             $index_params['body'][] = array('type' => $hit['_type'], 'id' => $hit['_id']);
             $index_params['body'][] = $hit['source'];
         }
         $client->bulk($index_params);
     }
 }
开发者ID:arturom,项目名称:index-dash,代码行数:14,代码来源:NonInteractiveCLI.php

示例8: flush

 /**
  * Flushes the items in this Bulk object to Elasticsearch. If there are no items, this method does nothing.
  *
  * (In particular, note that if no items are in the Bulk object, the bulk flush event is not fired.)
  *
  * @throws PartialFailureException
  */
 public function flush()
 {
     // We might have nothing to do
     if ($this->getItemCount() == 0) {
         return;
     }
     $this->dispatchEvent(Events::BULK_FLUSH, new BulkFlushEvent($this->index, $this->type, $this->getItemCount()));
     $params = ['index' => $this->index, 'type' => $this->type, 'body' => $this->itemList];
     $result = $this->elasticSearch->bulk($params);
     if (!empty($result->errors)) {
         throw new PartialFailureException(count($result->errors) . " items failed.", $result->errors);
     }
     $this->itemList = [];
     $this->itemCount = 0;
 }
开发者ID:jinsyaoommen,项目名称:php-elasticsearch,代码行数:22,代码来源:Bulk.php

示例9: addToIndexBulk

 /**
  * @param string $type entity name
  * @param array $data [[id => body]]
  * @return array
  *
  * @see http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/docs-bulk.html
  */
 public function addToIndexBulk($type, array $data)
 {
     $queries = [];
     foreach ($data as $id => $body) {
         $queries[] = ['index' => ['_id' => $id]];
         $queries[] = $body;
     }
     $res = parent::bulk(['index' => $this->index, 'type' => $type, 'body' => $queries]);
     foreach ($res['items'] as $queries) {
         foreach ($queries as $query) {
             if (isset($query['error'])) {
                 throw new ElasticsearchException($query['error']);
             }
         }
     }
     return $res;
 }
开发者ID:VasekPurchart,项目名称:khanovaskola-v3,代码行数:24,代码来源:ElasticSearch.php

示例10: indexProducts

 /**
  * @param ShopIndex $index
  * @param string[] $numbers
  * @return \string[]
  */
 public function indexProducts(ShopIndex $index, $numbers)
 {
     if (empty($numbers)) {
         return;
     }
     $products = $this->provider->get($index->getShop(), $numbers);
     $remove = array_diff($numbers, array_keys($products));
     $documents = [];
     foreach ($products as $product) {
         $documents[] = ['index' => ['_id' => $product->getNumber()]];
         $documents[] = $product;
     }
     foreach ($remove as $number) {
         $documents[] = ['delete' => ['_id' => $number]];
     }
     $this->client->bulk(['index' => $index->getName(), 'type' => ProductMapping::TYPE, 'body' => $documents]);
 }
开发者ID:GerDner,项目名称:luck-docker,代码行数:22,代码来源:ProductIndexer.php

示例11: executeBulk

 /**
  * {@inheritDoc}
  */
 public function executeBulk(BulkRequestInterface $bulk)
 {
     $bulkParams = ['body' => $bulk->getOperations()];
     $rawBulkResponse = $this->client->bulk($bulkParams);
     /**
      * @var BulkResponseInterface
      */
     $bulkResponse = $this->objectManager->create('Smile\\ElasticsuiteCore\\Api\\Index\\Bulk\\BulkResponseInterface', ['rawResponse' => $rawBulkResponse]);
     if ($bulkResponse->hasErrors()) {
         foreach ($bulkResponse->aggregateErrorsByReason() as $error) {
             $sampleDocumentIds = implode(', ', array_slice($error['document_ids'], 0, 10));
             $errorMessages = [sprintf("Bulk %s operation failed %d times in index %s for type %s", $error['operation'], $error['count'], $error['index'], $error['document_type']), sprintf("Error (%s) : %s", $error['error']['type'], $error['error']['reason']), sprintf("Failed doc ids sample : %s", $sampleDocumentIds)];
             $this->logger->error(implode(" ", $errorMessages));
         }
     }
     return $bulkResponse;
 }
开发者ID:smile-sa,项目名称:elasticsuite,代码行数:20,代码来源:IndexOperation.php

示例12: indexProperties

 /**
  * @param ShopIndex $index
  * @param int[] $groupIds
  */
 public function indexProperties(ShopIndex $index, $groupIds)
 {
     if (empty($groupIds)) {
         return;
     }
     /** @var Group[] $properties */
     $properties = $this->provider->get($index->getShop(), $groupIds);
     $remove = array_diff($groupIds, array_keys($properties));
     $documents = [];
     foreach ($properties as $property) {
         $documents[] = ['index' => ['_id' => $property->getId()]];
         $documents[] = $property;
     }
     foreach ($remove as $id) {
         $documents[] = ['delete' => ['_id' => $id]];
     }
     $this->client->bulk(['index' => $index->getName(), 'type' => PropertyMapping::TYPE, 'body' => $documents]);
 }
开发者ID:GerDner,项目名称:luck-docker,代码行数:22,代码来源:PropertyIndexer.php

示例13: commit

 /**
  * Inserts the current query container to the index, used for bulk queries execution.
  *
  * @param array $params Parameters that will be passed to the flush or refresh queries.
  *
  * @return null|array
  */
 public function commit(array $params = [])
 {
     $this->isReadOnly('Commit');
     if (!empty($this->bulkQueries)) {
         $bulkQueries = array_merge($this->bulkQueries, $this->bulkParams);
         $this->bulkQueries = [];
         $bulkResponse = $this->client->bulk($bulkQueries);
         switch ($this->getCommitMode()) {
             case 'flush':
                 $this->flush($params);
                 break;
             case 'refresh':
             default:
                 $this->refresh($params);
                 break;
         }
         return $bulkResponse;
     }
     return null;
 }
开发者ID:emgiezet,项目名称:ElasticsearchBundle,代码行数:27,代码来源:Manager.php

示例14: loadFile

 /**
  * @param CsvFile $file
  * @param LoadOptions $options
  * @param $primaryIndex
  * @return bool
  */
 public function loadFile(CsvFile $file, LoadOptions $options, $primaryIndex = null)
 {
     $csvHeader = $file->getHeader();
     $params = ['body' => []];
     $iBulk = 1;
     foreach ($file as $i => $line) {
         // skip header
         if (!$i) {
             continue;
         }
         $lineData = array_combine($csvHeader, $line);
         if ($primaryIndex) {
             if (!array_key_exists($primaryIndex, $lineData)) {
                 $this->logger->error(sprintf("CSV error: Missing id column %s on line %s", $primaryIndex, $i + 1));
                 return false;
             }
             $params['body'][] = ['index' => ['_index' => $options->getIndex(), '_type' => $options->getType(), '_id' => $lineData[$primaryIndex]]];
         } else {
             $params['body'][] = ['index' => ['_index' => $options->getIndex(), '_type' => $options->getType()]];
         }
         $params['body'][] = $lineData;
         if ($i % $options->getBulkSize() == 0) {
             $this->logger->info(sprintf("Write %s batch %d to %s start", $options->getType(), $iBulk, $options->getIndex()));
             $responses = $this->client->bulk($params);
             $this->logger->info(sprintf("Write %s batch %d to %s took %d ms", $options->getType(), $iBulk, $options->getIndex(), $responses['took']));
             $params = ['body' => []];
             if ($responses['errors'] !== false) {
                 if (!empty($responses['items'])) {
                     foreach ($responses['items'] as $itemResult) {
                         if (!empty($itemResult['index']['error'])) {
                             if (is_array($itemResult['index']['error'])) {
                                 $this->logger->error(sprintf("ES error: %s", $this->getErrorMessageFromErrorField($itemResult['index']['error'])));
                             } else {
                                 $this->logger->error(sprintf("ES error: %s", $itemResult['index']['error']));
                             }
                             return false;
                         }
                     }
                 }
                 return false;
             }
             $iBulk++;
             unset($responses);
         }
     }
     if (!empty($params['body'])) {
         $this->logger->info(sprintf("Write %s batch %d to %s start", $options->getType(), $iBulk, $options->getIndex()));
         $responses = $this->client->bulk($params);
         $this->logger->info(sprintf("Write %s batch %d to %s took %d ms", $options->getType(), $iBulk, $options->getIndex(), $responses['took']));
         if ($responses['errors'] !== false) {
             if (!empty($responses['items'])) {
                 foreach ($responses['items'] as $itemResult) {
                     if (!empty($itemResult['index']['error'])) {
                         if (is_array($itemResult['index']['error'])) {
                             $this->logger->error(sprintf("ES error: %s", $this->getErrorMessageFromErrorField($itemResult['index']['error'])));
                         } else {
                             $this->logger->error(sprintf("ES error: %s", $itemResult['index']['error']));
                         }
                         return false;
                     }
                 }
             }
             return false;
         }
         unset($responses);
     }
     return true;
 }
开发者ID:keboola,项目名称:elastic-writer,代码行数:74,代码来源:Writer.php

示例15: Client

<?php

include __DIR__ . '/../../vendor/autoload.php';
use Utils\ZillowClient;
use Elasticsearch\Client;
$client = new Client(['hosts' => ['http://localhost:9200']]);
$zClient = new ZillowClient();
$results = json_decode($zClient->getDataForAllZips());
$params = [];
$params['index'] = 'hrqls';
$params['type'] = 'houseData';
foreach ($results as $item) {
    $params['body'][] = array('create' => array('_id' => sha1($item->location->lat . $item->location->lon)));
    $params['body'][] = array('state' => $item->state, 'city' => $item->city, 'zip' => $item->zip, 'location' => array('lat' => $item->location->lat, 'lon' => $item->location->lon), 'avgHomeValueIndex' => $item->homeData->avgHomeValueIndex, 'avgHomesRecentlySold' => $item->homeData->avgHomesRecentlySold, 'avgPropertyTax' => $item->homeData->avgPropertyTax, 'turnoverWithinLastYear' => $item->homeData->turnoverWithinLastYear);
}
$client->bulk($params);
开发者ID:krishnaramya,项目名称:HRQLS,代码行数:16,代码来源:PopulateHousingData.php


注:本文中的Elasticsearch\Client::bulk方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。