不允许重新索引Elasticsearch?

时间:2016-08-17 04:02:33

标签: amazon-web-services elasticsearch

我已经设置了我的AWS 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."
}

我是否必须签署此请求?为什么我必须签署此请求但不创建或删除索引?

3 个答案:

答案 0 :(得分:5)

原因很简单,因为Amazon Elasticsearch Service是一种受限制的环境,您无法访问由Elasticsearch的准系统安装提供的所有服务和端点。

您可以查看您在Amazon Elasticsearch Service上允许使用的list of endpoints_reindex不属于该列表。

<强>更新

但是,还有另一种方法可以达到你想要的效果。通过利用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 :(得分:1)

在以前的版本1.5和2.3中将不提供Reindex功能。因此,如果您使用版本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

答案 2 :(得分:0)

我可以使用以下工具来做到这一点

taskrabbit/elasticsearch-dump

安装后,可以在命令行上运行它:

elasticdump \
  --input=http://es.com:9200/api/search \
  --input-index=my_index \
  --output=http://es.com:9200/api/search \
  --output-index=my_index \
  --type=mapping

注意:我确实必须使用--awsChain选项来找到我的凭据。