2016-08-23 13 views
2

私は検索アプリケーションを作成しています。データを弾性検索に再インデックスすると、インデックスを再作成するときにダウンタイムがあってはなりません。私はダウンタイムゼロで再インデックスプロセスを作りたいと思います。私はこれをやろうとしています:Elasticsearchでインデックスをエイリアスで検索する方法php client api

エイリアスで古いインデックスを探します。 は、新しいインデックスを作成し、新しいインデックス別名我々は、この使用してPHPクライアントライブラリを行うことができますどのように

を与えるエイリアスを削除し、古いインデックス を削除 新しいデータで埋めます。

+0

私たちは – legrandviking

+0

はStackOverflowのへようこそお手伝いを助けるためにいくつかのコードを共有してください。ヘルプドキュメントの投稿ガイドラインを読み、それに従ってください。 [最小、完全で検証可能な例](http://stackoverflow.com/help/mcve)がここに適用されます。コードを投稿して問題を正確に記述するまでは、効果的にお手伝いすることはできません。 StackOverflowは、コーディングまたはチュートリアルサービスではありません。 – Prune

答えて

1

なぜ人々は彼に投票を下しているのですか?その質問はまっすぐであり、弾性検索のためのドキュメントは簡単ではありません!とにかくここ

のソリューションです:

class SomeClass 
{ 
    /** @var \Elasticsearch\Client */ 
    private $client; 

    /** 
    * @param \Elasticsearch\Client $client 
    */ 
    public function __construct(\Elasticsearch\Client $client) 
    { 
     $this->client = $client; 
    } 

    /** 
    * @param string $aliasName 
    * 
    * @return null|string 
    */ 
    public function findIndexNameByAlias($aliasName) 
    { 
     $aliases = $this->client->indices()->getAliases(); 
     foreach ($aliases as $index => $aliasMapping) { 
      if (array_key_exists($aliasName, $aliasMapping['aliases'])) { 
       return $index; 
      } 
     } 

     return null; 
    } 
} 

$someClass = new SomeClass(new \Elasticsearch\Client()); 
echo "Index associated with 'MyAlias': " . $someClass->findIndexNameByAlias('MyAlias'); 
関連する問題