我在我的scala项目中使用elastic4s与ElasticSearch通信。为了开发,我启动了一个本地节点,一切都很好。在生产方面,我想使用服务。我已经配置了该服务,并允许通过我的ec2实例的ip访问它。我可以通过ssh到ec2并执行以下操作来验证它是否有效:
curl search-blabla-blabla.us-east-1.es.amazonaws.com/_cluster/health但是,我很难将elastic4s连接到那个ES实例。我在努力:
ElasticClient.remote("search-blabla-blabla.us-east-1.es.amazonaws.com", 9300)其结果是:
org.elasticsearch.client.transport.NoNodeAvailableException: None of the configured nodes are available: []读取文档后,elastic4s似乎只能通过TCP [1]进行连接,而不支持TCP[2]:该服务支持端口80上的HTTP,但不支持TCP传输。
有人能证实elastic4s和Amazon真的不一起工作吗?因为这意味着我必须重写我所有的ES代码。
发布于 2015-11-12 10:34:50
Amazon的Elasticsearch服务不支持TCP,只支持HTTP协议。Elastic4s只使用TCP,Elasticsearch (Elastic4s是Java的包装器)也使用TCP。
如果要使用HTTP,则需要手工编写查询并使用常规HTTP客户端,或者使用支持HTTP协议的Elasticsearch客户端。
更新:
从5.2版开始,elastic4s支持HTTP和TCP。这是目前的实验。https://github.com/sksamuel/elastic4s#quick-start
https://stackoverflow.com/questions/33582538
复制相似问题