我尝试从远程服务器重新索引。 远程服务器上的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}
答案 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:)