Edm*_*ond 13 amazon-web-services elasticsearch elasticsearch-java-api amazon-elasticsearch
我使用AWS elasticsearch服务(非EC2)设置了elasticsearch服务器.它给了我一个端点https://xxx-xxxxxxxx.us-west-2.es.amazonaws.com/如果我点击这个端点(注意没有指定端口)我可以得到预期的
{
status: 200,
name: "Mastermind",
cluster_name: "xxxx",
version: {
number: "1.5.2",
build_hash: "yyyyyy",
build_timestamp: "2015-04-27T09:21:06Z",
build_snapshot: false,
lucene_version: "4.10.4"
},
tagline: "You Know, for Search"
}
Run Code Online (Sandbox Code Playgroud)
问题是如何通过不带端口号的elasticsearch java客户端获取此信息?我得到的示例代码是
Client client = TransportClient.builder().build()
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("host1"), 9300));
Run Code Online (Sandbox Code Playgroud)
如果我使用此代码并将"host1"替换为我的端点,我将得到"NoNodeAvailableException"
ps:我使用的java客户端版本是2.0.0.
编辑 我最终决定选择第三方REST客户端Jest.但Brooks在下面回答的内容也非常有用 - AWS确实将端口80用于http,将443用于https.对我来说阻止者是我猜的防火墙.
Edit2
AWS ES服务文档明确说明:
该服务支持端口80上的HTTP,但不支持TCP传输.
Bro*_*oks 14
信不信由你,AWS不会使用9200和9300启动Elasticsearch.它是通过普通的旧端口80启动的.
所以,为了演示,试试这个......
curl -XPOST "http://xxx-xxxxxxxx.us-west-2.es.amazonaws.com:80/myIndex/myType" -d '["name":"Edmond"}'
Run Code Online (Sandbox Code Playgroud)
要么
curl -XPOST "https://xxx-xxxxxxxx.us-west-2.es.amazonaws.com:443/myIndex/myType" -d '["name":"Edmond"}'
Run Code Online (Sandbox Code Playgroud)
它应该响应:{"_ index":"myIndex","_ type":"myType","_ id":"SOME_ID _#","_ version":1,"created":true}
入住Kibana,你会发现它就在那里.
那么,在你的代码中,它应该是:
Client client = TransportClient.builder().build()
.addTransportAddress(new InetSocketTransportAddress(InetAddress.getByName("xxx-xxxxxxxx.us-west-2.es.amazonaws.com"), 80));
Run Code Online (Sandbox Code Playgroud)
不幸的是,我不知道如何使用传输客户端通过SSL/HTTPS传输加密.您可以尝试使用常规REST调用,而不是使用JERSEY.
最后,确保正确配置了Elasticsearch访问策略.有点像:
{
"Version": "2012-10-17",
"Statement": [
{
"Sid": "",
"Effect": "Allow",
"Principal": "*",
"Action": "es:*",
"Resource": "arn:aws:es:us-east-1:yyyyyyy:domain/myDomain/*"
},
{
"Sid": "",
"Effect": "Allow",
"Principal": "*",
"Action": "es:*",
"Resource": "arn:aws:es:us-east-1:yyyyyyyyy:domain/myDomain"
}
]
}
Run Code Online (Sandbox Code Playgroud)
注意:上述访问策略是完全开放的,不建议用于远离生产的任何地方.只是你知道....
| 归档时间: |
|
| 查看次数: |
17099 次 |
| 最近记录: |