[Elaticsearch]發佈 client!ruby, python, php, perl(release the clients! ruby, python, php, perl)

  • 843
  • 0

摘要:[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-藍小伙 -若有翻得不好的地方 麻煩提出 讓小伙有學習的機會