我正在尝试使用Titan ES client向JEST添加Elasticsearch HTTP访问权限。 titan-es仅支持ES'本地和传输(TCP)模式。但我想支持ES'HTTP接口上的通信。这将允许像titan-es
这样的客户端库使用AWS Elasticsearch作为索引后端,它只提供HTTP(S)接口。有关详细信息,请参阅this post。
我正在寻找对我目前正在考虑的方法的一些反馈:
ElasticsearchHttpClient
接口的新类org.elasticache.client.Client
。新类将使用JestClient
作为其内部客户端。这样它将通过HTTP与ES通信。新课程可能会扩展ES'AbstractClient
以减少必须实施的方法:admin()
,settings()
,execute()
,threadPool()
和{ {1}}。close()
HTTP_CLIENT
ElasticSearchSetup
上的connect()
方法返回HTTP_CLIENT
的实例,其中包含Connection
和node
的正确值。 client
成员将是新client
类的实例。ElasticsearchHttpClient
配置为ElasticSearchIndex.interfaceConfiguration()
,请确保Connection
方法检索ElasticsearchHttpClient
的正确实例(包含新的INTERFACE
)。从那时起,代码的其余部分应该继续使用新协议。 这听起来应该有效吗?第一步是我最关心的问题 - 我不相信我可以使用JestClient实现所有Client方法。
HTTP_CLIENT
[我也在Titan mailing list和Elasticsearch forum上问了这个问题。]
答案 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如果它更清洁。