2017-01-06 48 views
0

目標:創建一個使用ElasticSearch傳送其內容的網站。如何實現Transport-Client運行使用ElasticSearch作爲數據庫的網站?

問題:會有很多用戶同時訪問該網站。

選項:

  1. 創建和銷燬傳輸客戶端對象爲每個請求

  2. 創建傳輸客戶端對象池將被重用

  3. 使用傳輸客戶端對象爲單身人士

根據docs here,節點 - 客戶端不是這種情況下的選項。

技術背景如果它有任何區別:網站將使用Java與Play Framework。會有一個花哨的JS前端,預計會有許多微小的AJAX HTTP請求騷擾ElasticSearch。

回答

2

將傳輸客戶端用作單例。

+0

你能詳細說明原因嗎?如果查詢需要一些時間,這是否會阻止其他請求? – rapstacke

+0

@rapstacke由於ElasticSearch的創建者這樣說,請參閱[link](http://elasticsearch-users.115913.n3.nabble.com/What-is-your-best-practice-to-access-a-cluster- by-a-Java-client-tp4015311p4018507.html),並且對羣集的請求是異步和非阻塞的。避免創建多個傳輸客戶端,因爲每個傳播客戶端都會生成自己的線程池,並隨着羣集中節點的數量而增長。你可以像這裏[鏈接](https://discuss.elastic.co/t/elasticsearch-transport-client-spawning-a-large-number-of-threads/526/2)那樣擺弄ThreadPool - 當然這不是在文檔中。 – rapstacke

+0

我同意https://www.elastic.co/guide/en/elasticsearch/client/java-api/current/transport-client.html中顯示的不是很明顯。我只是說''在啓動時'意味着'在應用程序啓動時',但可能會比這更好。你想開一個公關嗎? – dadoonet

相關問題