无法在AWS上关闭ElasticSearch索引?

Ken*_*Too 12 amazon-web-services elasticsearch

我已经创建了一个新的AWS ElasticSearch域,用于测试.我现在在不同的主机上使用ES,我正在寻求转向AWS.

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

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

Your request: '/_all/_close' is not allowed by CloudSearch.
Run Code Online (Sandbox Code Playgroud)

AWS ES文件明确表示,要做到这一点在某些情况下:

 curl -XPOST 'http://search-weblogs-abcdefghijklmnojiu.us-east-1.a9.com/_all/_close'
Run Code Online (Sandbox Code Playgroud)

我还没有找到,说为什么我不能将能够关闭在AWS ES我的指数的任何文件,也没有我发现其他人谁都有这个问题.

我有一个ElasticSearch域也有点奇怪,但是它给了我一个CloudSearch错误消息,因为我认为这些是不同的服务,但我想一个是用另一个实现的.

谢谢!

bur*_*050 7

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

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

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

  • 如果要添加映射,则必须重新索引。关于使用别名来执行此操作的文章不错。基本步骤-创建读取别名和写入别名。将读取别名指向当前索引。使用新的映射创建新的索引。将写入别名指向新索引。然后将旧索引复制到新索引(从读取别名读取,从写入到写入别名)。这涉及修改现有代码以改为使用别名。https://www.elastic.co/guide/zh-CN/elasticsearch/guide/current/reindex.html https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-aliases.html (2认同)

Val*_*Val -2

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

action.destructive_requires_name: true
Run Code Online (Sandbox Code Playgroud)

您可以在配置文件中进行设置并重新启动集群,但我强烈建议您不要这样做,因为这会为各种其他破坏性操作打开大门,例如立即删除所有索引。

action.destructive_requires_name: false
Run Code Online (Sandbox Code Playgroud)

您应该做的是使用以下命令临时更新集群设置

curl -XPUT localhost:9200/_cluster/settings -d '{
    "persistent" : {
        "action.destructive_requires_name" : false
    }
}'
Run Code Online (Sandbox Code Playgroud)

然后关闭所有索引

curl -XPOST localhost:9200/_all/_close
Run Code Online (Sandbox Code Playgroud)

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

curl -XPUT localhost:9200/_cluster/settings -d '{
    "persistent" : {
        "action.destructive_requires_name" : true
    }
}'
Run Code Online (Sandbox Code Playgroud)