- Elasticsearch 教程
- Elasticsearch - 首頁
- Elasticsearch - 基本概念
- Elasticsearch - 安裝
- Elasticsearch - 資料填充
- 版本遷移
- Elasticsearch - API 約定
- Elasticsearch - 文件 API
- Elasticsearch - 搜尋 API
- Elasticsearch - 聚合
- Elasticsearch - 索引 API
- Elasticsearch - CAT API
- Elasticsearch - 叢集 API
- Elasticsearch - 查詢 DSL
- Elasticsearch - 對映
- Elasticsearch - 分析
- Elasticsearch - 模組
- Elasticsearch - 索引模組
- Elasticsearch - Ingest 節點
- Elasticsearch - 管理索引生命週期
- Elasticsearch - SQL 訪問
- Elasticsearch - 監控
- Elasticsearch - 資料彙總
- Elasticsearch - 凍結索引
- Elasticsearch - 測試
- Elasticsearch - Kibana 儀表板
- Elasticsearch - 按欄位過濾
- Elasticsearch - 資料表
- Elasticsearch - 區域地圖
- Elasticsearch - 餅圖
- Elasticsearch - 面積圖和條形圖
- Elasticsearch - 時間序列
- Elasticsearch - 詞雲
- Elasticsearch - 熱力圖
- Elasticsearch - Canvas
- Elasticsearch - 日誌 UI
- Elasticsearch 有用資源
- Elasticsearch - 快速指南
- Elasticsearch - 有用資源
- Elasticsearch - 討論
Elasticsearch - 測試
Elasticsearch 提供了一個 jar 檔案,可以新增到任何 Java IDE 中,並用於測試與 Elasticsearch 相關的程式碼。可以使用 Elasticsearch 提供的框架執行一系列測試。本章將詳細討論這些測試:
- 單元測試
- 整合測試
- 隨機測試
先決條件
要開始測試,您需要將 Elasticsearch 測試依賴項新增到您的程式中。您可以為此目的使用 Maven,並在 pom.xml 中新增以下內容。
<dependency> <groupId>org.elasticsearch</groupId> <artifactId>elasticsearch</artifactId> <version>2.1.0</version> </dependency>
EsSetup 已初始化以啟動和停止 Elasticsearch 節點以及建立索引。
EsSetup esSetup = new EsSetup();
帶有 createIndex 的 esSetup.execute() 函式將建立索引,您需要指定設定、型別和資料。
單元測試
單元測試是使用 JUnit 和 Elasticsearch 測試框架進行的。可以使用 Elasticsearch 類建立節點和索引,並在測試方法中使用它們來執行測試。ESTestCase 和 ESTokenStreamTestCase 類用於此測試。
整合測試
整合測試在一個叢集中使用多個節點。ESIntegTestCase 類用於此測試。有各種方法可以使準備測試用例的工作更容易。
| 序號 | 方法和描述 |
|---|---|
| 1 |
refresh() 重新整理叢集中的所有索引 |
| 2 |
ensureGreen() 確保綠色健康叢集狀態 |
| 3 |
ensureYellow() 確保黃色健康叢集狀態 |
| 4 |
createIndex(name) 建立具有傳遞給此方法的名稱的索引 |
| 5 |
flush() 重新整理叢集中的所有索引 |
| 6 |
flushAndRefresh() flush() 和 refresh() |
| 7 |
indexExists(name) 驗證指定索引的存在 |
| 8 |
clusterService() 返回叢集服務 Java 類 |
| 9 |
cluster() 返回測試叢集類 |
測試叢集方法
| 序號 | 方法和描述 |
|---|---|
| 1 |
ensureAtLeastNumNodes(n) 確保叢集中啟動的節點數量至少大於或等於指定數量。 |
| 2 |
ensureAtMostNumNodes(n) 確保叢集中啟動的節點數量最多小於或等於指定數量。 |
| 3 |
stopRandomNode() 停止叢集中的隨機節點 |
| 4 |
stopCurrentMasterNode() 停止主節點 |
| 5 |
stopRandomNonMaster() 停止叢集中不是主節點的隨機節點。 |
| 6 |
buildNode() 建立一個新節點 |
| 7 |
startNode(settings) 啟動一個新節點 |
| 8 |
nodeSettings() 重寫此方法以更改節點設定。 |
訪問客戶端
客戶端用於訪問叢集中的不同節點並執行某些操作。ESIntegTestCase.client() 方法用於獲取隨機客戶端。Elasticsearch 還提供其他方法來訪問客戶端,這些方法可以使用 ESIntegTestCase.internalCluster() 方法訪問。
| 序號 | 方法和描述 |
|---|---|
| 1 |
iterator() 這有助於您訪問所有可用的客戶端。 |
| 2 |
masterClient() 這將返回一個與主節點通訊的客戶端。 |
| 3 |
nonMasterClient() 這將返回一個不與主節點通訊的客戶端。 |
| 4 |
clientNodeClient() 這將返回當前在客戶端節點上啟動的客戶端。 |
隨機測試
此測試用於使用所有可能的資料測試使用者的程式碼,以便將來不會因任何型別的資料而失敗。隨機資料是執行此測試的最佳選擇。
生成隨機資料
在此測試中,Random 類由 RandomizedTest 提供的例項例項化,並提供許多方法來獲取不同型別的資料。
| 方法 | 返回值 |
|---|---|
| getRandom() | 隨機類例項 |
| randomBoolean() | 隨機布林值 |
| randomByte() | 隨機位元組 |
| randomShort() | 隨機短整型 |
| randomInt() | 隨機整數 |
| randomLong() | 隨機長整型 |
| randomFloat() | 隨機浮點數 |
| randomDouble() | 隨機雙精度浮點數 |
| randomLocale() | 隨機區域設定 |
| randomTimeZone() | 隨機時區 |
| randomFrom() | 陣列中的隨機元素 |
斷言
ElasticsearchAssertions 和 ElasticsearchGeoAssertions 類包含斷言,這些斷言用於在測試時執行一些常見的檢查。例如,觀察此處給出的程式碼:
SearchResponse seearchResponse = client().prepareSearch();
assertHitCount(searchResponse, 6);
assertFirstHit(searchResponse, hasId("6"));
assertSearchHits(searchResponse, "1", "2", "3", "4",”5”,”6”);