2013-10-29 65 views
13

ElasticSearch Docs讀取:是否可以使用ElasticSearch別名寫入多個索引?

別名也可以被映射到一個以上的指數,和指定它時,別名會自動擴大到別名索引。

但是當我嘗試向2個索引添加一個別名並寫入兩個索引時,似乎都沒有得到文檔更新。如果我刪除了其中一個別名,它將正確寫入仍然存在的別名。

與多個寫入別名失敗:

$ curl -XGET 'http://localhost:9200/_aliases' 

結果:

{ 
    "dev_01": { 
    "aliases": { 
     "dev_read": {}, 
     "dev_write": {} 
    } 
    }, 
    "dev": { 
    "aliases": { 
     "dev_write": {} 
    } 
    } 
} 

單別名作品:

$ curl -XGET 'http://localhost:9200/_aliases' 

結果:

{ 
    "dev_01": { 
    "aliases": { 
     "dev_read": {}, 
     "dev_write": {} 
    } 
    }, 
    "dev": { 
    "aliases": {} 
    } 
} 

elasticsearch是否支持寫入多個索引?如果指向多個索引,別名是否爲只讀?

回答

14

答案是否定

所以看來我應該蜂鳴更深被分流這一點,但我的客戶從ES得到的迴應是:

ElasticSearchIllegalArgumentException [別名[dev_write]有一個以上與之相關聯的指數[dev_01,開發],無法執行單一指數運算

只希望文檔都有些更明確的前面,因爲他們弄得我有點

起初似乎意味着,您可以:

別名API指數允許與名別名索引,以所有 API的別名自動轉換爲實際的指標名稱。別名也可以被映射到多個索引...

關聯的別名與多個索引只是幾個添加動作......

再往下的頁面讓你知道你不能:

將索引指向指向多個索引的別名是錯誤的。

+0

正確,答案的理由是:如果elasticsearch知道哪個索引應該保存新文檔(如果別名指向多個索引),該怎麼辦?像任何寫入操作一樣,索引是單一索引操作,因此它需要在特定索引上執行。 – javanna

+0

@javanna:我寧願說:因爲它沒有實現。我可以想出幾種方法來指定在哪裏寫以及如何寫入。 – soulmerge

+0

@soulmerge確定它可以通過指定寫入位置來實現,這會使得使用別名的用處不大。如果不支持,有一個原因。如果你有更好的想法,但反饋比歡迎! – javanna

相關問題