Reindex ElasticSearch索引返回“uri [/ _reindex]的不正确HTTP方法和方法[GET],允许:[POST]”

时间:2017-11-30 16:41:13

标签: elasticsearch

我正在尝试将弹性搜索群集从1.x升级到6.x.我正在将远程1.x索引重新索引到6.x群集中。根据{{​​3}},这是可能的:

  

要升级Elasticsearch 1.x群集,您有两种选择:

     
      
  • 执行完整集群重启升级到Elasticsearch 2.4.x并重新索引或删除1.x索引。然后,执行完全集群重新启动升级到5.6并重新索引或删除2.x索引。最后,执行滚动升级到6.x.有关从1.x升级到2.4的更多信息,请参阅Elasticsearch 2.4参考中的升级Elasticsearch。有关从2.4升级到5.6的更多信息,请参阅Elasticsearch 5.6参考中的升级Elasticsearch。

  •   
  • 创建新的6.x群集并从远程重新索引以直接从1.x群集导入索引。

  •   

我正在本地进行测试,并使用以下命令运行6.x:

curl --request POST localhost:9200/_reindex -d @reindex.json

我的reindex.json文件如下所示:

{
  "source": {
    "remote": {
      "host": "http://localhost:9200"
    },
    "index": "some_index_name",
    "query": {
      "match": {
        "test": "data"
      }
    }
  },
  "dest": {
    "index": "some_index_name"
  }
}

但是,这会返回以下错误:

  

uri [/ _reindex]和方法[GET]的HTTP方法不正确,允许:[POST]“

为什么告诉我我不能使用GET而是使用POST?我在这里明确指定了一个POST请求,但它似乎认为这是一个GET请求。知道为什么它会收到错误的请求类型吗?

1 个答案:

答案 0 :(得分:0)

我遇到了同样的问题,但通过在PUT请求中添加设置就可以了。

PUT /my_blog
{
  "settings" : {
        "number_of_shards" : 1
  },
    "mapping": {
        "post": {
            "properties": {
                "user_id": {
                    "type": "integer"
                },
                "post_text": {
                    "type": "string"
                },
                "post_date": {
                    "type": "date"
                }           
            }
        }
    }
}

你也可以参考这个 - https://www.elastic.co/guide/en/elasticsearch/reference/current/indices-create-index.html