向Elasticsearch添加新的HTTP客户端以支持客户端应用程序针对AWS Elasticsearch运行?

时间:2016-01-15 17:02:32

标签: java elasticsearch titan jest amazon-elasticsearch

我正在尝试使用Titan ES clientJEST添加Elasticsearch HTTP访问权限。 titan-es仅支持ES'本地和传输(TCP)模式。但我想支持ES'HTTP接口上的通信。这将允许像titan-es这样的客户端库使用AWS Elasticsearch作为索引后端,它只提供HTTP(S)接口。有关详细信息,请参阅this post

我正在寻找对我目前正在考虑的方法的一些反馈:

  1. 创建一个实现ElasticsearchHttpClient接口的新类org.elasticache.client.Client。新类将使用JestClient作为其内部客户端。这样它将通过HTTP与ES通信。新课程可能会扩展ES'AbstractClient以减少必须实施的方法:admin()settings()execute()threadPool()和{ {1}}。
  2. close()
  3. 添加新的枚举HTTP_CLIENT
  4. 确保ElasticSearchSetup上的connect()方法返回HTTP_CLIENT的实例,其中包含Connectionnode的正确值。 client成员将是新client类的实例。
  5. 如果ElasticsearchHttpClient配置为ElasticSearchIndex.interfaceConfiguration(),请确保Connection方法检索ElasticsearchHttpClient的正确实例(包含新的INTERFACE)。从那时起,代码的其余部分应该继续使用新协议。
  6. 这听起来应该有效吗?第一步是我最关心的问题 - 我不相信我可以使用JestClient实现所有Client方法。

    HTTP_CLIENT

    [我也在Titan mailing listElasticsearch forum上问了这个问题。]

1 个答案:

答案 0 :(得分:2)

我在Titan mailing list中发布了答案。

  

从Titan的角度来看,你需要做的是实现   IndexProvider接口。我的猜测是,这是不可行的   Jest看起来像一个完整的Elasticsearch客户端。

     

我认为你会使用JestHttpClient - 你不需要实现   Jest界面。 IndexProvider有方法   创建/删除/变异/查询索引,您应该可以执行此操作   HTTP。检查Elasticsearch HTTP文档以查看是否可以执行此操作   IndexProvider上使用JestHttpClient的所有必需方法。

     

已经有一个IndexProvider的ElasticSearchIndex实现,   这是NODE和TRANSPORT。您正在尝试添加HTTP或JEST   选项。因此,您可以考虑将您的更改用于修改   ElasticSearchIndex,但我不确定自那以后会有多好   现有的2个impls都是完整的Elasticsearch客户端。也许   考虑创建一个单独的ElasticSearchHttpIndex实现   IndexProvider如果它更清洁。