Elasticsearch 测试

17 Mar 2025 | 4 分钟阅读

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

  1. 单元测试
  2. 集成测试
  3. 随机测试

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

先决条件

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

通过创建 EsSetup 的对象来初始化 EsSetup,以启动和停止 Elasticsearch 节点。 请参见以下代码 -

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

单元测试

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

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

集成测试

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

序号方法描述
1cluster()cluster() 方法返回测试集群类。
2clusterService()此函数返回集群服务 Java 类。
3createIndex(name)此方法用于按传入的名称创建一个索引。
4ensureGreen()此函数有助于确保绿色健康集群状态。
5ensureYellow()此函数有助于确认黄色健康集群状态。
6flush()此函数用于刷新集群中的所有索引。
7flushAndRefresh()它在一个术语中执行 flush() 和 refresh() 操作。
8indexExists(name)此函数验证指定的索引是否存在。 这意味着它确保索引的存在。
9refresh()此函数用于刷新集群中的所有索引。

测试集群方法

Elasticsearch 提供了几个测试集群方法,如下所示 -

序号方法描述
1ensureAtLeastNumNodes(n)顾名思义,此方法用于确保集群中启动的最小节点数大于或等于指定的数字。
2ensureAtMostNumNodes(n)顾名思义,它用于确保集群中启动的最大节点数等于或小于指定的数字。
3stopRandomNode()此函数用于停止集群中的随机节点。
4stopCurrentMasterNode()要停止主节点,此函数很有用。
5stopRandomNonMaster()此函数有助于停止集群中的随机节点。 但是,此随机节点不是主节点。
6buildNode()buildNode() 函数用于创建新节点。
7startNode(settings)此函数用于启动新节点。
8nodeSettings()要更改节点设置,我们需要覆盖此方法。

访问客户端

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

序号方法描述
1iterator()用于访问所有可用客户端的迭代器方法。
2masterClient()此方法返回与主节点通信的客户端。
3nonMasterClient()与 masterClient() 方法不同,它返回不与主节点通信的客户端。
4clientNodeClient()该方法返回当前在客户端节点上启动的客户端。

随机测试

顾名思义,随机测试会测试用户代码的每一种可能数据。 因此,任何类型的数据出现故障的几率都非常小。 这是使用随机数据执行此测试的最佳方法。

生成随机数据

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

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

请记住,测试功能现在已被 Elasticsearch 社区弃用。 但本章提供的指南适用于旧版本 Elasticsearch 的用户。


下一主题Ingest 节点