无法在AWS上关闭ElasticSearch索引?

时间:2015-10-13 21:59:25

标签: amazon-web-services elasticsearch

我已经创建了一个新的AWS ElasticSearch域,用于测试。我现在在不同的主机上使用ES,并且我希望转移到AWS。

我需要做的一件事是在我的实例上设置映射(分析器)。为了做到这一点,我需要"关闭"索引,否则ES只会引发异常。

每当我尝试关闭索引时,我都会从AWS获得异常:

Your request: '/_all/_close' is not allowed by CloudSearch.

supply a profile location特别说在某些情况下这样做:

 curl -XPOST 'http://search-weblogs-abcdefghijklmnojiu.us-east-1.a9.com/_all/_close'

我还没有找到任何文档说明为什么我无法在AWS ES上关闭我的索引,也没有找到其他有此问题的人。

我有一个ElasticSearch域名也有点奇怪,但是它给了我一个CloudSearch错误消息,因为我认为这些是不同的服务,尽管我认为有一个是实现的就另一方而言。

谢谢!

3 个答案:

答案 0 :(得分:5)

AWS Elasticsearch不支持对索引执行“关闭”操作。

http://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/es-managedomains.html

“目前,Amazon ES不支持Elasticsearch _close API”

答案 1 :(得分:0)

根据我最近找到的 AWS 文档,您必须先将您的弹性搜索域升级到 7.4 或更高版本。

https://docs.aws.amazon.com/elasticsearch-service/latest/developerguide/aes-handling-errors.html#aes-troubleshooting-close-api

答案 2 :(得分:-1)

由于一次关闭所有索引是一个危险的操作,因此默认情况下可能会在群集上禁用它。您需要确保elasticsearch.yml配置文件不包含此内容:

action.destructive_requires_name: true

您可以在配置文件中设置此项并重新启动群集,但我强烈建议不要,因为这会打开通往各种其他破坏性操作的大门,例如一次删除所有索引

action.destructive_requires_name: false

您应该做的是暂时使用

更新群集设置
curl -XPUT localhost:9200/_cluster/settings -d '{
    "persistent" : {
        "action.destructive_requires_name" : false
    }
}'

然后关闭所有指数

curl -XPOST localhost:9200/_all/_close

然后将设置重置为更安全的值:

curl -XPUT localhost:9200/_cluster/settings -d '{
    "persistent" : {
        "action.destructive_requires_name" : true
    }
}'