我已经创建了一个新的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错误消息,因为我认为这些是不同的服务,尽管我认为有一个是实现的就另一方而言。
谢谢!
答案 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 或更高版本。
答案 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
}
}'