Elasticsearch reindex - unknown_host_exception

时间:2018-03-23 09:29:39

标签: elasticsearch

我尝试从远程服务器重新索引。 远程服务器上的Elasticsearch实例位于nginx代理后面,其url是端口80上的api.example.com/api/elasticsearch。

我可以访问远程elasticsearch并执行查询。例如。

curl http://api.example.com:80/api/elasticsearch/_cat/indices?v

给出了预期的结果。

但是,当我尝试从远程索引重新索引本地弹性搜索索引时,如下所示

curl -X POST http://elasticsearch:9200/_reindex -d '{ 
    "source": {
        "remote": { 
            "host": "http://api.example.com/api/elasticsearch:80"
        }, 
        "index": "alias_name" 
    }, 
    "dest": { 
        "index": "index_name" 
    }
}'

我收到错误:

{"error":{"root_cause":[{"type":"unknown_host_exception","reason":"api.example.com/api/elasticsearch: Name or service not known"}],"type":"unknown_host_exception","reason":"api.example.com/api/elasticsearch: Name or service not known"},"status":500}

1 个答案:

答案 0 :(得分:0)

根据https://www.elastic.co/guide/en/elasticsearch/reference/current/docs-reindex.html上的文档:

  

host参数必须包含方案,主机,端口(例如   https://otherhost:9200)和可选路径(例如   https://otherhost:9200/proxy)。用户名和密码参数   是可选的,当它们存在时,_reindex将连接到   使用基本身份验证的远程Elasticsearch节点。请确保在以下情况下使用https   使用基本身份验证,否则密码将以纯文本形式发送。

在您的情况下:“ http://api.example.com:80/api/elasticsearch”或“ http://api.example.com/api/elasticsearch

最重要的是:

  

远程主机必须在elasticsearch.yaml中明确列入白名单   使用reindex.remote.whitelist属性。可以设置为逗号   允许的远程主机和端口组合的定界列表(例如   otherhost:9200,another:9200,127.0.10。:9200,localhost: