2016-08-17 41 views
2

我已經設置了我的AWS Elasticsearch實例,以便任何人都可以對它執行任何操作(創建,刪除,搜索等)。不允許重新索引Elasticsearch?

這些是我的權限(我Elasticsearch ARN替換$ myARN):

{ 
    "Version": "2012-10-17", 
    "Statement": [ 
    { 
     "Effect": "Allow", 
     "Principal": { 
     "AWS": "*" 
     }, 
     "Action": "es:*", 
     "Resource": "$myARN" 
    } 
    ] 
} 

當我PUT一個新的指標:

PUT http://my-elasticsearch-domain.us-west-2.es.amazonaws.com/index-name 

或者我DELETE指數:

DELETE http://my-elasticsearch-domain.us-west-2.es.amazonaws.com/index-name 

我得到這個:

{ 
    "acknowledged": true 
} 

,這意味着我可以創建和刪除索引,但是當我嘗試POST一個重新索引我得到:

{ 
    "Message": "Your request: '/_reindex' is not allowed." 
} 

我必須簽署這一要求?爲什麼我必須簽署此請求,但不創建或刪除索引?

回答

4

原因僅僅是因爲Amazon Elasticsearch服務是一種受限制的環境,您無法訪問由Elasticsearch的準系統安裝提供的全部服務和端點。

您可以檢查允許您在Amazon Elasticsearch Service上使用的list of endpoints,並且_reindex不屬於該列表的一部分。

UPDATE

還有另一種方式來實現你想要什麼,雖然。通過利用Logstash,您可以從ES獲取數據,應用您希望的任何轉換並將其轉回ES。

input { 
    elasticsearch { 
    hosts => ["my-elasticsearch-domain.us-west-2.es.amazonaws.com:80"] 
    index => "index-name" 
    docinfo => true 
    } 
} 
filter { 
mutate { 
    remove_field => [ "@version", "@timestamp" ] 
} 
# add other transformations here 
} 
output { 
elasticsearch { 
    hosts => ["my-elasticsearch-domain.us-west-2.es.amazonaws.com:80"] 
    manage_template => false 
    index => "%{[@metadata][_index]}" 
    document_type => "%{[@metadata][_type]}" 
    document_id => "%{[@metadata][_id]}" 
} 
} 
+1

那麼糟透了。 – Jared

+0

還有另外一種方法;)我已經更新了我的答案以展示另一種解決方案。 – Val

+0

任何運氣重塑與Logstash? – Val

0

重新編制索引功能在先前版本1.5和2.3中不可用。因此,目前如果您使用1.5或2.3版本,那麼最好升級到最新的ES版本,這樣可以獲得更好的索引性能和其他先前版本不支持的功能。

還可以查看下面的鏈接以瞭解更多在不同版本的AWS Elasticsearch中支持的API。如果您查看5.1部分,您可以在那裏列出「_reindex」。

http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/aes-supported-es-operations.html#es_version_5_1