2017-05-15 20 views
0

以下のシナリオを考えてみましょう。ElasticSearch RollOver index - エイリアスが複数のインデックスを指し示すことができないのはなぜですか?

インデックスA1を指す別名があります。ここでは、ESのrollOver機能を使用してインデックスI2を作成し、エイリアスポイントをI1とI2にしたいと考えています。

いつも転がり続け、エイリアスA1が最後の2つのインデックスまたは一般的に最後の「n」インデックスを指し示すことはできますか?

+0

これは、簡単な 'index-templates'で達成できます。ここで、A1が最新のインデックスを指しており、他のすべての 'I *'インデックスを指している2つの別名A1とA2があるとしましょう。このようにして、 'A2'はいつも期待通りに複数のインデックスを指しています。これまでに 'A1'(複数の指数を指し示すならば)で期待していたことは、' A2'でも同じように達成することができます。この薄い区別を理解したいと思います。そうでないと思われる場合はお知らせください。 – avr

答えて

1

あなたはこのように複数のインデックスに1つの別名を指すことができます:あなたは、ロールオーバーで:

POST /_aliases 
{ 
    "actions" : [ 
     { "add" : { "indices" : ["l1", "l2"], "alias" : "A1" } } 
    ] 
} 

かさえ、このようなワイルドカードインデックスパターンにエイリアスを指す:

POST /_aliases 
{ 
    "actions" : [ 
     { "add" : { "index" : "l*", "alias" : "A1" } } 
    ] 
} 

EDITそのエイリアスを1つのインデックス、つまり最新のインデックスのみにポイントすることができます。最後の2つのインデックス、n個のインデックス、またはパターンl*に一致するすべてのインデックスを指すエイリアスが必要な場合は、上で示した要求を使用して別名を作成する必要があります。

EDIT 2:インデックスに30日間のログを残したい場合は、これを達成する方法です。私は 'l1'と 'A1'のエイリアスのようなインデックスの命名と一貫していました。最初の30日後、l000002という名前の新しい索引が作成されます(命名規則では、最後の索引の数が増え、長さが6のゼロ埋め込み)。別名A1は索引l000002を指します。私はの第2のエイリアスを作成して、元のように 'l *'を参照します。

PUT /l1 
{ "aliases": { "A1": {} } } 


POST /A1/_rollover 
{ "conditions": { "max_age": "30d" } } 

POST /_aliases 
{ 
    "actions" : [ 
     { "add" : { "index" : "l*", "alias" : "A2" } } 
    ] 
} 
+0

私はrollOverインデックス機能の場合にこれを参照しています。私はこれを別に行うことができることを知っています。 –

+0

私は私の答えを編集しました。それが役に立つかどうか私に教えてください。 – fylie

+0

しかし、私の質問は、なぜロールオーバー機能でできないのでしょうか? ESがそれをやっていない特定の理由はありますか? –

関連する問題