PHP code example of zumba / elasticsearch-index-rotate
1. Go to this page and download the library: Download zumba/elasticsearch-index-rotate library. Choose the download type require.
2. Extract the ZIP file and open the index.php.
3. Add this code to the index.php.
<?php
require_once('vendor/autoload.php');
/* Start to develop here. Best regards https://php-download.com/ */
zumba / elasticsearch-index-rotate example snippets
$client = new \Elasticsearch\Client();
$indexRotator = new \Zumba\ElasticsearchRotator\IndexRotator($client, 'pizza_shops');
$client->search([
'index' => $indexRotator->getPrimaryIndex(), // Get the current primary!
'type' => 'shop',
'body' => [] //...
]);
$client = new \Elasticsearch\Client();
$indexRotator = new \Zumba\ElasticsearchRotator\IndexRotator($client, 'pizza_shops');
// Build your index here
$newlyBuiltIndexName = 'my_new_built_index_name';
$indexRotator->copyPrimaryIndexToSecondary();
$indexRotator->setPrimaryIndex($newlyBuiltIndexName);
// optionally remove the old index right now
$indexRotator->deleteSecondaryIndices();
use \Elasticsearch\Client;
use \Zumba\ElastsearchRotator\IndexRotator;
class MySearchIndex {
const INDEX_PREFIX = 'pizza_shops';
public function __constructor(\Elasticsearch\Client $client) {
$this->client = $client;
}
public function search($params) {
$indexRotator = new IndexRotator($this->client, static::INDEX_PREFIX);
return $client->search([
'index' => $indexRotator->getPrimaryIndex(), // Get the current primary!
'type' => 'shop',
'body' => $params
]);
}
public function rebuildIndex() {
$indexRotator = new IndexRotator($client, static::INDEX_PREFIX);
$newlyBuiltIndexName = $this->buildIndex($client);
$indexRotator->copyPrimaryIndexToSecondary();
$indexRotator->setPrimaryIndex($newlyBuiltIndexName);
// optionally remove the old index right now
$indexRotator->deleteSecondaryIndices();
}
private function buildIndex(\Elasticsearch\Client $client) {
$newIndex = static::INDEX_PREFIX . '_' . time();
// get data and build index for `$newIndex`
return $newIndex;
}
}
$client = new \Elasticsearch\Client();
$indexRotator = new \Zumba\ElasticsearchRotator\IndexRotator($client, 'pizza_shops');
$aliasStrategy = $indexRotator->strategyFactory(IndexRotator::STRATEGY_ALIAS, [
'alias_name' => 'pizza_shops',
'index_pattern' => 'pizza_shops_*'
]);
// Build your index here
$newlyBuiltIndexName = 'pizza_shops_1234102874';
$indexRotator->copyPrimaryIndexToSecondary();
$indexRotator->setPrimaryIndex($newlyBuiltIndexName);
// Now that the alias is set, you can search on that alias instead of having to call `getPrimaryIndex`.
$client->search([
'index' => 'pizza_shops',
'type' => 'shop',
'body' => [] //...
])
Loading please wait ...
Before you can download the PHP files, the dependencies should be resolved. This can take some minutes. Please be patient.