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的用户的。

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