ES 测试

Elasticsearch 提供了一个jar 文档,用于测试elasticsearch 相关的代码。我们可以将此 jar 文件添加到任何 Java IDE。 Elasticsearch 提供了一个框架,可帮助利用该系统执行一系列测试。基本上在elasticsearch中进行了三种类型的测试来测试代码,如下:

  • 单元测试
  • 集成测试
  • 随机测试

需要记住的一件事是,新版本的 elasticsearch 不支持测试。它现在已被 elasticsearch 社区弃用。但在本章中,我们将为您提供早期版本的elasticsearch用户的一般测试指南。

前置要求

开始执行测试在Elasticsearch中,需要设置一些前置要求。为此,我们必须将 elasticsearch 依赖项添加到我们的程序中。为此,我们可以使用 maven 并将以下代码添加到 pom.xml 文件中。

<dependency>
  <groupId>org.elasticsearch</groupId>
  <artifactId>elasticsearch</artifactId>
  <version>2.1.0</version>
</dependency>

通过创建对象来启动和停止 Elasticsearch 节点来初始化 EsSetup。看下面的代码:

EsSetup esetobj = new EsSetup();

您还可以使用 esSetup.execute() 函数和 createindex 创建索引,其中需要指定设置、类型和数据。

单元测试

单元测试是基础测试,使用elasticsearch测试框架和JUnit。我们可以通过使用 Elasticsearch 类来创建节点和索引,它们可以在测试方法中使用来执行测试。

为了执行单元测试,使用了 Elasticsearch Test Case 和 Elasticsearch Token Stream Case 类。

集成测试

集成测试在单元测试之后进行。在elasticsearch中,它是通过使用集群中的多个节点来执行的。您需要使用 ESIntegTestCase 类进行此测试。 Elasticsearch 提供了多种方法,可以帮助用户更轻松地准备测试用例。以下是这些方法的列表:

方法 说明
cluster() cluster() 方法返回测试集群类。
clusterService() 该函数返回集群服务java类。
createIndex(name) 此方法用于根据传入的名称创建索引。
ensureGreen() 此功能有助于确保绿色健康集群状态。
ensureYellow() 此功能有助于确认黄色健康集群状态。
flush() 该函数用于刷新集群中的所有索引。
flushAndRefresh() 它在一个术语中同时执行flush()和refresh()操作。
indexExists(name) 该函数验证指定的索引是否存在。这意味着它确保了索引的存在。
refresh() 该函数用于刷新集群中的所有索引。

测试集群方法

Elasticsearch 提供了几种测试集群方法,下面给出:

方法 说明
ensureAtLeastNumNodes(n) 顾名思义,此方法用于确保集群中最少up节点数大于或等于指定数量。
ensureAtMostNumNodes(n) 顾名思义,它用于确保集群中的最大节点数等于或小于指定数量。
stopRandomNode() 该函数用于停止集群中的随机节点。
stopCurrentMasterNode() 停止主节点,这个功能很有用。
stopRandomNonMaster() 此功能有助于停止集群中的随机节点。但是,这个随机节点不是主节点。
buildNode() buildNode() 函数用于创建一个新节点。
startNode(设置) 该函数用于启动一个新节点。
nodeSettings() 要更改节点设置,我们需要覆盖此方法。

访问客户端

在elasticsearch中,客户端用于访问集群中的不同节点。它也对它们执行一些操作。要获取随机客户端,请使用 ESIntegTestCase.client() 方法。 elasticsearch还提供了一些其他的方法,用于访问客户端。 ESIntegCase.internalCluster() 方法用于访问这些方法。以下是这些方法的列表:

方法 说明
iterator() 用于访问所有可用客户端的迭代器方法。
masterClient() 此方法返回一个与主节点通信的客户端。
nonMasterClient() 与 masterClient() 方法不同,它返回一个不与主节点通信的客户端。
clientNodeClient() 该方法返回一个客户端,该客户端当前在客户端节点上。

随机测试

顾名思义,随机测试针对每个可能的数据测试用户的代码。因此,对于任何类型的数据,失败的可能性都非常小。这是使用随机数据执行此测试的最佳方法。

生成随机数据

在此测试中,RandomizedTest 提供了加速 Random 类的实例.除此之外,它还提供了各种方法来获取不同类型的数据。以下是方法及其返回值:

方法 返回值
getRandom() 它返回一个随机类的实例。
getBoolean() 返回随机布尔值。
randomByte() 返回随机字节
randomShort() 随机返回空头
randomInt() 返回随机整数
randomLong() 返回随机长
randomFloat() 返回随机浮动
randomDouble() 返回随机双精度
randomLocale() 返回随机区域
randomTimeZone() 随机返回时区
randomFrom() 从数组中返回随机元素

请记住,elasticsearch 社区现已弃用 测试功能。但是本章提供的指南是针对旧版elasticsearch的用户的。

下一章:ES 生命周期

在本章中,我们将讨论管理索引生命周期。众所周知,Elasticsearch 不仅执行各种任务,还管理索引生命周期。它涉及根据某些因素(例如分片大小和性能要求)执行管理操作。在 Elasticsearch 6.7 中。从 0 ...