我想在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。
如何解决这个问题?
答案 0 :(得分:1)
Elasticsearch不支持开箱即用的SSL。 http.cors
设置用于启用和设置CORS(跨域资源共享)机制,但与SSL无关。
如果您希望ES群集通过HTTPS / SSL提供请求,则需要使用Shield plugin或最好使用XPack设置SSL / TLS(如果您正在运行ES 5)。