- 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”);