elasticsearch java api——客戶端 org.elasticsearch.clie

在elasticsearch源代碼中,進入到org.elasticsearch.client,你會發現下圖所示的類: java

咱們從最外層開始。 node

1 org.elasticsearch.client.AdminClient接口 數據庫

AdminClient下有兩個方法:
1) cluster(),產生一個容許從集羣中執行action或操做的client;
2) indices(),產生一個容許從索引中執行action或操做的client。 異步

AdminClient接口有兩個實現類,分別爲org.elasticsearch.client.AdminClient.NodeAdminClient和org.elasticsearch.client.transport.support.InternalTransportAdminClient。 elasticsearch

1.1 org.elasticsearch.client.AdminClient.NodeAdminClient類 ide

NodeAdminClient有一個帶有@Inject註解的構造器,並實現了接口AdminClient的兩個方法,以下所示: ui

[java]  view plain copy
  1. @Inject  
  2. public NodeAdminClient(Settings settings, NodeClusterAdminClient clusterAdminClient, NodeIndicesAdminClient indicesAdminClient) {  
  3.     super(settings);  
  4.     this.indicesAdminClient = indicesAdminClient;  
  5.     this.clusterAdminClient = clusterAdminClient;  
  6. }  
  7.   
  8. @Override  
  9. public IndicesAdminClient indices() {  
  10.     return indicesAdminClient;  
  11. }  
  12.   
  13. @Override  
  14. public ClusterAdminClient cluster() {  
  15.     return this.clusterAdminClient;  
  16. }  

@Inject致使了一個直接的後果:你只能經過被@Inject標註的構造器生成實例。 this

indices()和cluster()覆蓋了AdminClient的同名方法,分別返回NodeIndicesAdminClient和NodeClusterAdminClient對象。

NodeAdminClient會繼承父類org.elasticsearch.common.component.AbstractComponent的nodeName()方法用以獲取當前節點的名稱。 spa

1.2 org.elasticsearch.client.transport.support.InternalTransportAdminClient類 .net

InternalTransportAdminClient其實與NodeAdminClient相似,只是它的indices()和cluster()分別返回的是InternalTransportIndicesAdminClient和InternalTransportClusterAdminClient。

NodeAdminClient和InternalTransportAdminClient均沒有子類,因此只有當咱們須要用到NodeIndicesAdminClient、NodeClusterAdminClient、InternalTransportIndicesAdminClient或InternalTransportClusterAdminClient時,才考慮建立這兩個類的實體。

2 org.elasticsearch.client.Client接口

Client爲從集羣中執行action或operation提供了一站式接口,這裏的全部操做都是天然而然地異步執行的,每一個action或operation都有兩種風格,一種是簡單地返回一個org.elasticsearch.action.ActionFuture,另外一種是訪問一個org.elasticsearch.action.ActionListener。你能夠在org.elasticsearch.node.Node啓動時取得一個Client,也可使用org.elasticsearch.client.transport.TransportClient遠程鏈接一個或多個節點。

Client有如下方法:

1) close(),關閉客戶端;

2) admin(),返回一個能夠執行管理性操做的客戶端;

3) 兩個execute,用於執行通常性操做,這裏的通常性與上文提到的管理性相對;

4) prepareExecute,準備一個RequestBuilder對象,獲得RequestBuilder對象後再作執行操做,固然,在這之間,你能夠作一些個性化設置;

5) index(IndexRequest request),根據給寫的index和type索引一個JSON資源,index和type由IndexRequest提供,IndexRequest也可提供id,若不提供時,id將自動生成;

6) index(IndexRequest request, ActionListener<IndexResponse> listener),與index(IndexRequest request)的區別在於它不會直接返回索引建立的結果,而是將結果轉給監聽器,由listener來通知請求者;

7) prepareIndex()、prepareIndex(String index, String type)、prepareIndex(String index, String type, @Nullable String id),準備建立索引,但不建立索引;

8) update(UpdateRequest request),基於一個script更新文檔,返回更新後的結果;

9) update(UpdateRequest request, ActionListener<UpdateResponse> listener),更新,但不返回結果,而是交由監聽器;

10) prepareUpdate()、prepareUpdate(String index, String type, String id),準備更新,但不執行更新;

11) delete(DeleteRequest request)、delete(DeleteRequest request, ActionListener<DeleteResponse> listener),根據DeleteRequest提供的index、type和id從索引中刪除文檔;

12) prepareDelete()、prepareDelete(String index, String type, String id),準備刪除,但不執行刪除;

13) bulk(BulkRequest request)、bulk(BulkRequest request, ActionListener<BulkResponse> listener),批量操做;

14) prepareBulk(),準備執行批量操做,但不執行;

15) deleteByQuery(DeleteByQueryRequest request)、deleteByQuery(DeleteByQueryRequest request, ActionListener<DeleteByQueryResponse> listener),基於查詢刪除索引;

16) prepareDeleteByQuery(String... indices),準備刪除,但不執行刪除;

17) get(GetRequest request)、get(GetRequest request, ActionListener<GetResponse> listener)根據GetRequest提供的index、type和id獲取文檔;

18) prepareGet()、prepareGet(String index, @Nullable String type, String id),準備獲取,但不執行獲取;

19) multiGet(MultiGetRequest request)、multiGet(MultiGetRequest request, ActionListener<MultiGetResponse> listener),批量獲取文檔;

20) prepareMultiGet(),準備批量獲取,但不執行獲取操做;

21) count(CountRequest request)、count(CountRequest request, ActionListener<CountResponse> listener),獲取適應特定query的文檔數量;

22) prepareCount(String... indices),準備獲取適應特定query的文檔數量,但不獲取;

23) search(SearchRequest request)、search(SearchRequest request, ActionListener<SearchResponse> listener),根據SearchRequest提供的index、id和type執行搜索;

24) prepareSearch(String... indices),準備但不搜索;

25) searchScroll(SearchScrollRequest request)、searchScroll(SearchScrollRequest request, ActionListener<SearchResponse> listener)、prepareSearchScroll(String scrollId),經過用於迭代搜索結果;

26) multiSearch(MultiSearchRequest request)、multiSearch(MultiSearchRequest request, ActionListener<MultiSearchResponse> listener)、prepareMultiSearch(),執行多個搜索請求;

27) moreLikeThis(MoreLikeThisRequest request)、moreLikeThis(MoreLikeThisRequest request, ActionListener<SearchResponse> listener)、prepareMoreLikeThis(String index, String type, String id),相似於數據庫中的like操做,先根據index、type、id找到一個document,再找到跟這個文檔like的其餘文檔;

28) percolate(PercolateRequest request)、percolate(PercolateRequest request, ActionListener<PercolateResponse> listener)、preparePercolate(String index, String type),過濾一個請求,返回匹配的結果;

29) explain(ExplainRequest request)、explain(ExplainRequest request, ActionListener<ExplainResponse> listener)、prepareExplain(String index, String type, String id),爲指定的請求計算一個score


參考文獻:http://blog.csdn.net/geloin/article/details/8448691

相關文章
相關標籤/搜索