dedup
dedup 命令根据指定的字段从搜索结果中移除重复的文档。
语法
dedup 命令的语法如下:
dedup [int] <field-list> [keepempty=<bool>] [consecutive=<bool>]
参数
dedup 命令支持以下参数。
| 参数 | 必需/可选 | 描述 |
|---|---|---|
<field-list> |
必需 | 用于去重的字段列表,以逗号分隔。至少需要一个字段。 |
<int> |
可选 | 为每个字段组合保留的重复文档数量。必须大于 0。默认值为 1。 |
keepempty |
可选 | 当设置为 true 时,保留字段列表中任何字段为 NULL 值或缺失的文档。默认值为 false。 |
consecutive |
可选 | 当设置为 true 时,仅移除连续重复的文档。默认值为 false。需要启用旧版 SQL 引擎 (plugins.calcite.enabled=false)。 |
示例 1:基于单个字段移除重复项
以下查询基于 gender 字段对文档进行去重:
source=accounts
| dedup gender
| fields account_number, gender
| sort account_number
查询返回以下结果:
| account_number | gender |
|---|---|
| 1 | M |
| 13 | F |
示例 2:保留多个重复文档
以下查询基于 gender 字段移除重复文档,但同时保留两个重复项:
source=accounts
| dedup 2 gender
| fields account_number, gender
| sort account_number
查询返回以下结果:
| account_number | gender |
|---|---|
| 1 | M |
| 6 | M |
| 13 | F |
示例 3:处理具有空字段值的文档
以下查询在去重的同时,保留指定字段为 null 值的文档:
source=accounts
| dedup email keepempty=true
| fields account_number, email
| sort account_number
查询返回以下结果:
| account_number | |
|---|---|
| 1 | amberduke@pyrami.com |
| 6 | hattiebond@netagy.com |
| 13 | null |
| 18 | daleadams@boink.com |
以下查询在去重时,忽略指定字段为空值的文档:
source=accounts
| dedup email
| fields account_number, email
| sort account_number
查询返回以下结果:
| account_number | |
|---|---|
| 1 | amberduke@pyrami.com |
| 6 | hattiebond@netagy.com |
| 18 | daleadams@boink.com |
示例 4:对连续文档进行去重
以下查询移除连续重复的文档:
source=accounts
| dedup gender consecutive=true
| fields account_number, gender
| sort account_number
查询返回以下结果:
| account_number | gender |
|---|---|
| 1 | M |
| 13 | F |
| 18 | M |