操作
operations
元素包含所有可用操作的列表,用于指定调度。
bulk
bulk
操作类型允许您将 批量 请求作为任务运行。
用法
以下示例展示了一个 bulk
操作类型,其 bulk-size
为 5000
个文档
{
"name": "index-append",
"operation-type": "bulk",
"bulk-size": 5000
}
在客户端之间拆分文档
当您有多个 clients
时,OpenSearch Benchmark 会根据设置的客户端数量拆分每个文档。拥有多个 clients
可以并行执行批量索引操作,但不会保留每个文档的摄取顺序。例如,如果 clients
设置为 2
,一个客户端从开头开始索引文档,而另一个客户端从中间开始索引文档。
如果存在多个文档或语料库,OpenSearch Benchmark 尝试以两种方式并行索引所有文档
- 每个客户端从语料库中的不同点开始。例如,在一个包含2个语料库和5个客户端的工作负载中,客户端1、3和5从第一个语料库开始,而客户端2和4从第二个语料库开始。
- 每个客户端被分配到多个文档。客户端1从第一个语料库的第一个文档的第一次拆分开始。然后它移动到第二个语料库的第一个文档的第一次拆分,依此类推。
配置选项
使用以下选项自定义 bulk
操作。
参数 | 必需 | 类型 | 描述 |
---|---|---|---|
bulk-size | 是 | 数字 | 指定批量请求中要摄取的文档数量。 |
ingest-percentage | 否 | 范围 [0, 100] | 定义要索引的文档语料库的部分。有效值为0到100之间的数字。 |
语料库 | 否 | 列表 | 定义批量操作应针对哪些文档语料库名称。仅当 corpora 部分包含多个文档语料库且您不想在批量请求期间索引所有这些语料库时才需要。 |
索引 | 否 | 列表 | 定义批量索引操作中应使用的索引。OpenSearch Benchmark 仅选择具有匹配 target-index 的文档文件。 |
batch-size | 否 | 数字 | 定义 OpenSearch Benchmark 同时读取多少个文档。这是一个专家设置,仅用于避免批量大小非常小时的意外瓶颈。如果您想以 bulk-size 为 1 进行基准测试,则应设置更高的 batch-size 。 |
pipeline | 否 | 字符串 | 定义要使用的现有摄取管道。 |
conflicts | 否 | 字符串 | 定义要模拟的索引 conflicts 类型。如果未指定,则不模拟。有效值为“sequential”(按顺序递增的文档ID替换文档ID)和“random”(用随机文档ID替换文档ID)。 |
conflict-probability | 否 | 百分比 | 定义当存在冲突时替换多少文档。将 conflicts=sequential 与 conflict-probability=0 结合使用会使 OpenSearch Benchmark 自己生成索引ID,而不是使用 OpenSearch 的自动ID生成。有效值为0到100之间的数字。默认值为 25% 。 |
on-conflict | 否 | 字符串 | 确定 OpenSearch 应使用操作 index 还是 update 索引来处理ID冲突。默认值为 index ,它会在ID冲突期间创建新索引。 |
recency | 否 | 数字 | 使用0到1之间的数字表示新近度。接近 1 的新近度会使冲突的ID偏向更新的ID。接近0的新近度会考虑所有ID用于ID冲突。 |
detailed-results | 否 | 布尔型 | 记录更详细的批量请求元数据。由于 OpenSearch Benchmark 会更详细地分析相应的批量响应,因此可能会产生额外的开销,这可能会使测量结果产生偏差。此属性必须设置为 true ,以便 OpenSearch Benchmark 记录单个批量请求失败。 |
timeout | 否 | 持续时间 | 定义 OpenSearch 在完成以下操作的处理之前为每个操作等待的时间量(以分钟为单位):自动索引创建、动态映射更新以及等待活动分片。默认值为 1m 。 |
refresh | 否 | 字符串 | 控制 OpenSearch 针对使用 refresh 批量API查询参数的批量请求的刷新行为。有效值为 true (在后台刷新目标分片);wait_for (阻塞批量请求直到受影响的分片已刷新);和 false (使用默认刷新行为)。 |
元数据
bulk
操作始终返回以下元数据
index
:受影响索引的名称。如果无法推导索引,则返回null
。weight
:批量大小的操作无关表示,以units
表示。unit
:用于解释weight
的单位。success
:一个布尔值,指示bulk
请求是否成功。success-count
:请求中成功处理的批量项数。当存在错误或在文档中指定了bulk-size
时,会确定此值。error-count
:请求中失败的批量项数。took
:批量响应中took
属性的值。
如果 detailed-results
为 true
,则返回以下元数据
ops
:一个嵌套文档,其键为操作名称(例如index
、update
或delete
),值为各种计数。item-count
包含此键的总项数。此外,OpenSearch Benchmark 会为每个结果返回一个单独的计数器,例如,创建项的数量或删除项的数量。shards_histogram
:一个散列数组,每个散列包含两个键。item-count
键包含适用分片分布的项数。shards
键包含一个散列,其中包含total
、successful
和failed
分片的实际分布。bulk-request-size-bytes
:批量请求正文的总大小(以字节为单位)。total-document-size-bytes
:批量请求正文中所有文档的总大小(以字节为单位)。
create-index
create-index
操作运行 创建索引API。它支持以下两种索引创建模式
- 创建工作负载
indices
部分中指定的所有索引 - 创建操作本身中定义的一个特定索引
用法
以下示例创建了工作负载 indices
部分中定义的所有索引。它使用工作负载中定义的所有索引设置,但会覆盖分片数量
{
"name": "create-all-indices",
"operation-type": "create-index",
"settings": {
"index.number_of_shards": 1
},
"request-params": {
"wait_for_active_shards": "true"
}
}
以下示例创建了一个新索引,其中包含操作主体中指定的所有索引设置
{
"name": "create-an-index",
"operation-type": "create-index",
"index": "people",
"body": {
"settings": {
"index.number_of_shards": 0
},
"mappings": {
"docs": {
"properties": {
"name": {
"type": "text"
}
}
}
}
}
}
配置选项
从工作负载的 indices
部分创建所有索引时,请使用以下选项。
参数 | 必需 | 类型 | 描述 |
---|---|---|---|
settings | 否 | 数组 | 指定要与工作负载的 indices 部分中指定的索引设置合并的其他索引设置。 |
request-params | 否 | 设置列表 | 包含创建索引API允许的任何请求参数。OpenSearch Benchmark 不会尝试序列化参数,并按其当前状态传递它们。 |
在操作中创建单个索引时,请使用以下选项。
参数 | 必需 | 类型 | 描述 |
---|---|---|---|
index | 是 | 字符串 | 索引名称。 |
body | 否 | 请求正文 | 创建索引API的请求主体。有关更多信息,请参阅创建索引API。 |
request-params | 否 | 设置列表 | 包含创建索引API允许的任何请求参数。OpenSearch Benchmark 不会尝试序列化参数,并按其当前状态传递它们。 |
元数据
create-index
操作返回以下元数据
weight
:操作创建的索引数量。unit
:始终为 ops
,表示工作负载中的操作数量。success
:一个布尔值,指示操作是否成功。
delete-index
delete-index
操作运行 删除索引API。与 create-index
操作一样,您可以删除工作负载 indices
部分中找到的所有索引,或者根据 index
设置中传递的字符串删除一个或多个索引。
用法
以下示例删除工作负载 indices
部分中找到的所有索引
{
"name": "delete-all-indices",
"operation-type": "delete-index"
}
以下示例删除所有 logs_*
索引
{
"name": "delete-logs",
"operation-type": "delete-index",
"index": "logs-*",
"only-if-exists": false,
"request-params": {
"expand_wildcards": "all",
"allow_no_indices": "true",
"ignore_unavailable": "true"
}
}
配置选项
删除工作负载 indices
部分中指定的所有索引时,请使用以下选项。
参数 | 必需 | 类型 | 描述 |
---|---|---|---|
only-if-exists | 否 | 布尔型 | 决定是否应删除现有索引。默认值为 true 。 |
request-params | 否 | 设置列表 | 包含创建索引API允许的任何请求参数。OpenSearch Benchmark 不会尝试序列化参数,并按其当前状态传递它们。 |
如果您想根据 index
选项中指示的模式删除一个或多个索引,请使用以下选项。
参数 | 必需 | 类型 | 描述 |
---|---|---|---|
index | 是 | 字符串 | 您要删除的索引。 |
only-if-exists | 否 | 布尔型 | 决定当索引存在时是否应删除该索引。默认值为 true 。 |
request-params | 否 | 设置列表 | 包含创建索引API允许的任何请求参数。OpenSearch Benchmark 不会尝试序列化参数,并按其当前状态传递它们。 |
元数据
delete-index
操作返回以下元数据
weight
:操作创建的索引数量。unit
:始终为 ops
,表示工作负载中的操作数量。success
:一个布尔值,指示操作是否成功。
cluster-health
cluster-health
操作运行 集群健康API,它检查集群健康状态并根据为 request-params
设置的参数返回预期状态。如果返回意外的集群健康状态,则操作会报告失败。您可以使用 OpenSearch Benchmark execute-test
命令中的 --on-error
选项来控制 OpenSearch Benchmark 在健康检查失败时的行为。
用法
以下示例创建了一个 cluster-health
操作,该操作检查任何 log-*
索引的 green
健康状态
{
"name": "check-cluster-green",
"operation-type": "cluster-health",
"index": "logs-*",
"request-params": {
"wait_for_status": "green",
"wait_for_no_relocating_shards": "true"
},
"retry-until-success": true
}
配置选项
将以下选项与 cluster-health
操作一起使用。
参数 | 必需 | 类型 | 描述 |
---|---|---|---|
index | 是 | 字符串 | 您要评估的索引。 |
request-params | 否 | 设置列表 | 包含集群健康API允许的任何请求参数。OpenSearch Benchmark 不会尝试序列化参数,并按其当前状态传递它们。 |
元数据
cluster-health
操作返回以下元数据
weight
:cluster-health
操作评估的索引数量。始终为 1
,因为该操作每个索引运行一次。unit
:始终为 ops
,表示工作负载中的操作数量。success
:一个布尔值,指示操作是否成功。
cluster-status
:当前集群状态。relocating-shards
:当前正在迁移到不同节点的分片数量。
refresh
refresh
操作运行刷新API。operation
不返回任何元数据。
用法
以下示例刷新所有 logs-*
索引
{
"name": "refresh",
"operation-type": "refresh",
"index": "logs-*"
}
配置选项
refresh
操作使用以下选项。
参数 | 必需 | 类型 | 描述 |
---|---|---|---|
index | 否 | 字符串 | 要刷新的索引或数据流的名称。 |
search
search
操作运行 搜索API,您可以使用它在 OpenSearch Benchmark 索引中运行查询。
用法
以下示例在 search
操作中运行 match_all
查询
{
"name": "default",
"operation-type": "search",
"body": {
"query": {
"match_all": {}
}
},
"request-params": {
"_source_include": "some_field",
"analyze_wildcard": "false"
}
}
配置选项
search
操作使用以下选项。
参数 | 必需 | 类型 | 描述 |
---|---|---|---|
index | 否 | 字符串 | 查询所针对的索引或数据流。此选项仅在 indices 部分包含两个或更多索引时才需要。否则,OpenSearch Benchmark 会自动派生要使用的索引或数据流。指定 "index": "_all" 以查询工作负载中的所有索引。 |
cache | 否 | 布尔型 | 指定是否使用查询请求缓存。OpenSearch Benchmark 未定义值。默认值取决于基准测试候选设置和 OpenSearch 版本。 |
request-params | 否 | 设置列表 | 包含搜索API允许的任何请求参数。 |
body | 是 | 请求正文 | 指示要使用哪个查询和查询参数。 |
detailed-results | 否 | 布尔型 | 记录有关查询的更详细元数据。设置为 true 时,可能会产生额外的开销,这可能会使测量结果产生偏差。此选项不适用于 scroll 查询。 |
results-per-page | 否 | 整数 | 指定每页要检索的文档数量。这映射到搜索API size 参数,可用于滚动和非滚动搜索。默认值为 10 。 |
元数据
始终返回以下元数据
weight
:操作的“权重”。对于常规查询始终为1
,对于滚动查询为检索到的页数。unit
:用于解释权重的单位,对于常规查询为ops
,对于滚动查询为pages
。success
:一个布尔值,指示查询是否成功。
如果 detailed-results
设置为 true
,则还会返回以下元数据
hits
:查询的总命中数。hits_relation
:命中数是否准确 (eq) 或实际命中数的下限 (gte)。timed_out
:查询是否超时。对于滚动查询,如果任何已发出的查询此标志为true
,则此标志为true
。took
:查询响应中took
属性的值。对于滚动查询,该值为所有查询响应中所有took
值的总和。