如何使用HTTPS通过REST API设置elasticsearch安全连接

时间:2017-01-09 05:57:06

标签: rest elasticsearch lucene

我想在Lucene引擎中查询由elasticsearch索引的数据,但我想通过使用SSL来保证此连接的安全性:

https://x.y.z.w:9200/index_name/_search?&q=field:value

这是我的全部代码:

<!doctype html>
<html lang="fa">
   <head>
    <title>XHR App Test</title>
    <script>
       function send() {
            var xhr = new XMLHttpRequest(),
            url = 'https://x.y.z.w:9200/index_name/_search?&q=field:value',
            sendButton = document.getElementById('sendButton');

        xhr.onreadystatechange = function(e) { 
            console.log(e);
            if (e.currentTarget.readyState > 2) {
                document.getElementById('result').innerHTML = e.currentTarget.responseText;
            }
        };
        xhr.open('GET', url, true);
        xhr.send(null);
    }
    </script>
  </head>
  <body>
     <h1>XHR App Test</h1>

     <button id='sendButton' onclick="send()">Send</button>
     <div id="result"></div>

  </body>
</html>

我还在elasticsearch.yml文件中添加了这些配置:

 http.port: 9200
 http.cors.enabled : true
 http.cors.allow-origin: /https?:\/\//
 http.cors.allow-methods : OPTIONS, HEAD, GET, POST, PUT, DELETE
 http.cors.allow-headers : "X-Requested-With,X-Auth-Token,Content-Type, Content-Length, Authorization"
# http.cors.allow-credentials : true

但只能通过http协议查询而不是https。

如何解决这个问题?

1 个答案:

答案 0 :(得分:1)

Elasticsearch不支持开箱即用的SSL。 http.cors设置用于启用和设置CORS(跨域资源共享)机制,但与SSL无关。

如果您希望ES群集通过HTTPS / SSL提供请求,则需要使用Shield plugin或最好使用XPack设置SSL / TLS(如果您正在运行ES 5)。