[Elaticsearch]发布 client!ruby, python, php, perl(release the clients! ruby, python, php, perl)

摘要:[Elaticsearch]发布 client!ruby, python, php, perl(release the clients! ruby, python, php, perl)


release the clients! ruby, python, php, perl

[Elaticsearch]发布 client!ruby, python, php, perl(release the clients! ruby, python, php, perl)

此文章为翻译文,原文出自(include): http://www.elasticsearch.org/blog/unleash-the-clients-ruby-python-php-perl/



今天,公告发布官方版本的Elasticsearch clients 对于Ruby, Python, PHP and Perl,在未来,其他的语言也将一一实现。所有的client都在Apache2开源许可证下授权。


为什么我们要用提供官方版clients?


Elasticsearchg社群这些年来对于很多语言提供了很多的clients已经做得很棒了。这些功能差异性很大:有些小封装只有一些功能;有些比较高级带有大量的抽象功能;有些将功能专注于Elasticsearch API,其它则专注于网络通讯层;有些大量的覆盖Elasticsearch APIs;有些当开发者需要时实现一些功能。

这些功能可能是基于某开发者偏爱的功能及风格。

有一部分的使用者有多个语言的需求,他们想在这些功能内使用Elasticsearch。client端的差异可以使得开发上更复杂,这并不是使用者想要的。使用者应该专注于业务逻辑。


这些clients 提供了什么?


我们已经写了一些,client拥有几个目标如下


没有其他的意见!(no opinions)

它应该尽可能的简单地并直接根据 Elasticsearch reference docs去实现。全部的Elasticsearch APIs都由这原生Elasticsearch REST interfac做直接传输的client来提供。


搭配上cluster,运行良好!(play nicely with the cluster)

虽然Elasticsearch使用HTTP调用是很简单的,但当node失效是很棘手的,它能处理动态的节点侦测或是失效备援。对于cluster,这些clients 提供一个坚固的网络工作基底。


全功能,APIs一致性的覆盖率(full, consistent coverage of the apis)

我们实现了全部full REST interface。全部都实现了!在不同的语言之间,这些方法调用和参数是一致性的。你可以从任何有被支持的clients使用相同的调用。可以这么说,每个client好像都一样,就好像属于同一种语言被写入在使用者的代码中。你将不会感觉到像是Ruby内写入Java 或 PHP内 写入C++ 那种格格不入的感觉。


传输的抽象概念(transport abstraction)

这些clients不被某个独特的网络模块依赖。对于不同的环境来说,不同的HTTP后台都可以被外挂进去,或匹配这个你正在使用的HTTP client。但是在未来这个抽象概念也允许你外挂不同的通讯协定。有哪种协定比HTTP协定更有效率呢!


延伸与克服 (extend and conquer)

clients根据REST interface提供了一个小型封装。或他们的使用风格不同于你,你可能更喜爱较为抽象的概念(更多的细节)。我们听见你的声音了,于是我们创造的clients可以被延展。对于你们的需求我们痛苦的尝试,为了提供你们拥有更坚固的基础,对于创建符合使用者本身的interface。 这是SourceCode美妙的地方:我们的使用者可能将有更好的想法或者甚至还没有想法。现在你也有这样的工具去实现它们,而不必从头开始。


经由elasticsearch得到的支持 (supported by elasticsearch)

因为我们写了这些clients和测试clients,对于这些clients,我们可以 提供官方支持。当bugs被找到,我们可以尽快的修正bugs。



...
...
...

ok! 其它不翻译了,因为目前还不需要使用到以下技术,故到此为止。



by-蓝小伙 -若有翻得不好的地方 麻烦提出 让小伙有学习的机会