elasticsearch-anomaly-detection-explainer
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseAnomaly Detection Score Explainer
异常检测分数解释器
Explain anomaly scores, model behavior, and why results look the way they do. Use the ML REST API for job config and
the standard API against for results — no ES|QL, fully compatible with Elastic
Serverless. For job lifecycle (create, start, stop), use the skill.
<!-- begin-partial: preamble -->_search.ml-anomalies-*elasticsearch-anomaly-detection解释异常分数、模型行为以及结果呈现方式的原因。使用ML REST API获取任务配置,针对使用标准 API获取结果——不使用ES|QL,完全兼容Elastic Serverless。对于任务生命周期(创建、启动、停止),请使用技能。
<!-- begin-partial: preamble -->.ml-anomalies-*_searchelasticsearch-anomaly-detectionEnvironment Configuration
环境配置
This skill executes Elasticsearch operations through the CLI. If the
CLI is not installed, tell the user what it is needed for. Do
not guess credentials, call the HTTP API directly, or attempt other workarounds.
elasticelasticThis skill references operations in HTTP-shorthand form (e.g., , , ,
, ). The Operations table at the end of this document
maps each shorthand to the equivalent CLI command — always use the CLI rather than calling the HTTP API
directly.
<!-- end-partial: preamble -->
GET /GET /_cat/indicesGET /{index}/_mappingGET /{index}/_settings/index.modePOST /_queryelasticPrerequisite: ML anomaly detection requires a Platinum-equivalent license on self-managed clusters. Serverless projects include ML. The caller needsto read job config and anomaly results.monitor_mlServerless note: TheREST endpoints return HTTP 410 in Elastic Serverless. Always use_ml/.../results/*for result queries instead — fully supported everywhere this skill runs.POST /.ml-anomalies-*/_search
本技能通过 CLI执行Elasticsearch操作。如果未安装 CLI,请告知用户其用途。请勿猜测凭证、直接调用HTTP API或尝试其他变通方法。
elasticelastic本技能以HTTP简写形式引用操作(例如、、、、)。本文档末尾的操作表格将每个简写映射为等效的 CLI命令——请始终使用CLI而非直接调用HTTP API。
<!-- end-partial: preamble -->
GET /GET /_cat/indicesGET /{index}/_mappingGET /{index}/_settings/index.modePOST /_queryelastic前提条件: ML异常检测在自托管集群上需要铂金级等效许可证。Serverless项目包含ML功能。调用者需要权限才能读取任务配置和异常结果。monitor_mlServerless说明: 在Elastic Serverless中,REST端点返回HTTP 410错误。请始终使用_ml/.../results/*查询结果——本技能运行的所有环境均完全支持此方式。POST /.ml-anomalies-*/_search
Process
流程
-
Decide whether to fetch data or interpret what the user supplied. If the user embeds an anomaly record (or job config) in the prompt, interpret it directly using the domain knowledge below — do not call APIs to re-fetch fields already present. If the job ID, time range, or record is missing, retrieve it from the cluster.The decision: proceed with judgment-only explanation when the record contains,
record_score,initial_record_score,actual, andtypical; otherwise fetch the missing pieces before explaining.function -
Verify connectivity when calling the cluster. Call. If the call fails, stop and surface the connection error — do not guess endpoints or credentials.
GET / -
Resolve the job ID and load config. When the job ID is unknown, callto list candidates. Call
GET /_ml/anomaly_detectorsfor fullGET /_ml/anomaly_detectors/{job_id}(bucket_span, detectors, custom_rules, use_null, model_plot_config) andanalysis_configforGET /_ml/anomaly_detectors/{job_id}/_stats,state, and data counts.model_size_stats.memory_statusThe decision: confirm detector function and direction match the user's question before interpreting scores. Ajob legitimately fires on drops; alow_countjob does not.high_count -
Retrieve anomaly records for the time range. Callwith
POST /.ml-anomalies-*/_search, the job ID, a timestamp range, and optionalresult_type: recordfilter. Readrecord_score,initial_record_score,record_score,actual,typical,function, andmulti_bucket_impact.anomaly_score_explanationAlways show bothandinitial_record_score. The gap is the renormalization story.record_score -
Classify the score pattern before speculating on causes.
- >>
initial_record_score— Renormalization. A later, more extreme anomaly rescale this record downward. This is expected, healthy model behavior — not a broken model or reason to distrust the detection. Userecord_scorefor alerting severity; show both scores and explain the gap explicitly.initial_record_score - ==
initial_record_score— No renormalization has occurred since detection.record_score - <<
actualwithtypical,low_count, orcount— Absence / drop anomaly. A high score is legitimate — the job detected an outage, pipeline stall, or service failure. This is not a false positive. Recommend incident investigation, not score tuning.low_mean - >>
actualwithtypicalorhigh_count— Spike anomaly; confirm withhigh_mean.single_bucket_impact
Only citefactors present in the record. Ifanomaly_score_explanationishigh_variance_penalty, do not blame variance. If a factor is absent, note that it was not returned — do not invent it.false -
Quantify renormalization across the job (optional). Re-queryfor records in the time range sorted by
POST /.ml-anomalies-*/_searchascending. Computetimestampper record and filter toscore_drift = initial_record_score − record_score. Large negative drift (initial >> record) confirms renormalization after a more extreme anomaly appeared later.|score_drift| ≥ 20 -
Add context when the user asks "what caused this?" or "why so low/high?"
- Model bounds — If is true, call
model_plot_config.enabledwithPOST /.ml-anomalies-*/_searchfor the same job and time range. Compareresult_type: model_plottoactual/model_lower.model_upper - Influencers — Call with
POST /.ml-anomalies-*/_searchfor the bucket time range; sort byresult_type: influencerdescending.influencer_score - Categorization jobs — Call with
POST /.ml-anomalies-*/_searchto list learned log patterns (result_type: category_definition,terms,regexperexamples).category_id
For aggregations, cross-job queries, bucket-level results, or custom filters beyond score and time, see references/explainer-reference.md. - Model bounds — If
-
决定是获取数据还是解释用户提供的内容。如果用户在提示中嵌入了异常记录(或任务配置),请直接使用以下领域知识进行解释——无需调用API重新获取已存在的字段。如果任务ID、时间范围或记录缺失,请从集群中检索。判断标准:当记录包含、
record_score、initial_record_score、actual和typical时,仅通过判断进行解释;否则,在解释前先获取缺失的信息。function -
调用集群时验证连通性。调用。如果调用失败,请停止操作并显示连接错误——请勿猜测端点或凭证。
GET / -
解析任务ID并加载配置。当任务ID未知时,调用列出候选任务。调用
GET /_ml/anomaly_detectors获取完整的GET /_ml/anomaly_detectors/{job_id}(bucket_span、detectors、custom_rules、use_null、model_plot_config),调用analysis_config获取GET /_ml/anomaly_detectors/{job_id}/_stats、state和数据计数。model_size_stats.memory_status判断标准:在解释分数前,确认检测器函数和方向与用户的问题匹配。任务会在数值下降时正常触发,而low_count任务则不会。high_count -
检索指定时间范围的异常记录。调用,参数设置为
POST /.ml-anomalies-*/_search、任务ID、时间范围以及可选的result_type: record过滤器。读取record_score、initial_record_score、record_score、actual、typical、function和multi_bucket_impact。anomaly_score_explanation始终显示**和initial_record_score两者**。两者的差值反映了重新归一化的情况。record_score -
在推测原因前对分数模式进行分类。
- >>
initial_record_score—— 重新归一化。后续出现的更极端异常将此记录的分数向下调整。这是预期的健康模型行为——并非模型故障或检测不可信的原因。使用record_score作为告警严重程度的依据;同时显示两个分数并明确解释差值。initial_record_score - ==
initial_record_score—— 检测后未发生重新归一化。record_score - <<
actual且使用typical、low_count或count—— 缺失/下降异常。高分数是合理的——任务检测到中断、管道停滞或服务故障。这不是误报。建议调查事件,而非调整分数。low_mean - >>
actual且使用typical或high_count—— 峰值异常;通过high_mean确认。single_bucket_impact
仅引用记录中存在的因素。如果anomaly_score_explanation为high_variance_penalty,请勿将低分数归咎于方差。如果某个因素缺失,请注明未返回该因素——不要编造。false -
量化任务中的重新归一化情况(可选)。重新查询,获取指定时间范围内按
POST /.ml-anomalies-*/_search升序排序的记录。计算每条记录的timestamp,并过滤出score_drift = initial_record_score − record_score的记录。较大的负漂移(initial >> record)确认在出现更极端的异常后发生了重新归一化。|score_drift| ≥ 20 -
当用户询问“这是什么原因导致的?”或“为什么分数这么低/高?”时添加上下文信息。
- 模型边界 —— 如果为true,调用
model_plot_config.enabled,参数设置为POST /.ml-anomalies-*/_search,指定相同的任务和时间范围。将result_type: model_plot与actual/model_lower进行比较。model_upper - 影响因素 —— 调用,参数设置为
POST /.ml-anomalies-*/_search,指定时间桶范围;按result_type: influencer降序排序。influencer_score - 分类任务 —— 调用,参数设置为
POST /.ml-anomalies-*/_search,列出学习到的日志模式(每个result_type: category_definition对应的category_id、terms、regex)。examples
如需聚合、跨任务查询、桶级结果或超出分数和时间范围的自定义过滤器,请参考references/explainer-reference.md。 - 模型边界 —— 如果
Common multi-step workflows
常见多步骤工作流
| Task | Steps (in order) |
|---|---|
| Explain a specific anomaly | job config → records (job + exact time) → show initial_record_score vs record_score + score factors. |
| Why is my score low? | job config → records → renormalization check → model plot (if enabled) → explain score factors. |
| Why is my score high? | job config → records → check function direction, insufficient history, use_null, cardinality. |
| Renormalization drift | records (timestamp sort) → compute score_drift → list records where initial >> record. |
| Which entities contributed? | influencers (job + time range) → sort by influencer_score. |
| Visualize model bounds | model plot (job + time range) → compare model_lower/model_upper vs actual. |
| Categorization job patterns | category_definition (job_id) → terms, regex, examples per category. |
| 任务 | 步骤(按顺序) |
|---|---|
| 解释特定异常 | 任务配置 → 记录(任务+精确时间) → 展示initial_record_score与record_score的对比及分数影响因素。 |
| 为什么我的分数很低? | 任务配置 → 记录 → 检查重新归一化情况 → 模型绘图(若启用) → 解释分数影响因素。 |
| 为什么我的分数很高? | 任务配置 → 记录 → 检查函数方向、历史数据不足、use_null、基数情况。 |
| 重新归一化漂移 | 记录(按时间戳排序) → 计算score_drift → 列出initial远大于record的记录。 |
| 哪些实体导致了异常? | 影响因素(任务+时间范围) → 按influencer_score排序。 |
| 可视化模型边界 | 模型绘图(任务+时间范围) → 比较model_lower/model_upper与actual。 |
| 分类任务模式 | category_definition(job_id) → 每个分类对应的terms、regex、examples。 |
Critical principles
核心原则
- Retrieve the record first (or use the one the user supplied). Never explain scores without ,
initial_record_score,record_score,actual, andtypical.function - Renormalization is healthy. When , a more extreme anomaly appeared later and lowered this score — expected behavior, not a model failure.
initial_record_score >> record_score - Direction matters. fires when values drop;
low_countfires on spikes. A high score on a traffic stop withhigh_countis correct detection, not a false positive.low_count - Explain factors before speculating. Read from the record. Only address factors that are present and relevant.
anomaly_score_explanation - Job config is essential. , detector function,
bucket_span,custom_rules, and memory status all affect scores. Inspect job config when a score is surprising.use_null - Model plot is the most visual explanation. When enabled, show model bounds to illustrate where the actual value falls relative to the expected range.
- For job health ("missing documents", "memory limit", "datafeed not running") use the skill.
elasticsearch-anomaly-detection
- 先获取记录(或使用用户提供的记录)。在没有、
initial_record_score、record_score、actual和typical的情况下,请勿解释分数。function - 重新归一化是健康的。当时,后续出现的更极端异常降低了该分数——这是预期行为,而非模型故障。
initial_record_score >> record_score - 方向至关重要。在数值下降时触发;
low_count在峰值时触发。在流量中断时,high_count任务给出的高分数是正确的检测结果,而非误报。low_count - 先解释因素再推测。从记录中读取。仅处理存在且相关的因素。
anomaly_score_explanation - 任务配置必不可少。、检测器函数、
bucket_span、custom_rules和内存状态都会影响分数。当分数令人惊讶时,请检查任务配置。use_null - 模型绘图是最直观的解释方式。启用后,展示模型边界以说明实际值相对于预期范围的位置。
- 如需处理任务健康问题(“缺失文档”、“内存限制”、“数据馈送未运行”),请使用技能。
elasticsearch-anomaly-detection
Domain knowledge
领域知识
Score types
分数类型
| Term | Meaning |
|---|---|
| record_score | Normalized 0–100 for a single anomaly record; updated by renormalization. >75 critical. |
| initial_record_score | Score assigned at detection time, before renormalization. Use for alerting. |
| anomaly_score | Bucket-level severity aggregated across all detectors in a job. |
| influencer_score | How unusual a specific entity (host, user, service) is in a bucket; high = likely cause. |
| multi_bucket_impact | 0–5; how much sustained, multi-bucket behavior raised the score. ≥3 = behavioral shift. |
| 术语 | 含义 |
|---|---|
| record_score | 单个异常记录的归一化分数(0–100);会因重新归一化更新。>75为严重级别。 |
| initial_record_score | 检测时分配的分数,未经过重新归一化。用于告警。 |
| anomaly_score | 任务中所有检测器在时间桶级别聚合的严重程度。 |
| influencer_score | 特定实体(主机、用户、服务)在时间桶中的异常程度;分数越高,越可能是异常原因。 |
| multi_bucket_impact | 0–5;持续多桶行为对分数的提升程度。≥3表示行为发生变化。 |
anomaly_score_explanation factors
anomaly_score_explanation因素
The field on each record breaks the score into components:
anomaly_score_explanation| Factor | Direction | Meaning |
|---|---|---|
| anomaly_length | Raises | Number of consecutive buckets the anomaly spans. Longer → higher score. |
| single_bucket_impact | Raises | Extremity of this single bucket. Lower probability → higher impact. |
| multi_bucket_impact | Raises | Contribution of sustained multi-bucket pattern. |
| anomaly_characteristics_impact | Raises | Whether the anomaly is a mean shift vs. variance change. |
| high_variance_penalty | Lowers | Noisy data or early training → wide confidence bounds → score reduced. |
| incomplete_bucket_penalty | Lowers | Bucket had less data than expected (delayed data, sparse events). |
anomaly_score_explanation| 因素 | 方向 | 含义 |
|---|---|---|
| anomaly_length | 提升 | 异常持续的连续时间桶数量。持续时间越长,分数越高。 |
| single_bucket_impact | 提升 | 单个时间桶的极端程度。概率越低,影响越大。 |
| multi_bucket_impact | 提升 | 持续多桶模式的贡献。 |
| anomaly_characteristics_impact | 提升 | 异常是均值偏移还是方差变化。 |
| high_variance_penalty | 降低 | 数据噪声大或处于训练初期 → 置信区间宽 → 分数降低。 |
| incomplete_bucket_penalty | 降低 | 时间桶的数据量少于预期(数据延迟、事件稀疏)。 |
Why a score might be unexpectedly low
分数异常低的原因
- high_variance_penalty: The metric is historically noisy — wide confidence bounds absorb the spike.
- Renormalization: A more extreme anomaly appeared later and pushed this score down (>>
initial_record_score).record_score - Insufficient training history: Need ≥3 weeks for weekly seasonality, ≥2 full cycles for any detected period.
- bucket_span too large: Short-duration spikes get smoothed. Use a smaller for high-frequency events.
bucket_span - Detector function mismatch: vs
mean,high_meanvscount— only one direction fires.high_count - incomplete_bucket_penalty: Bucket received less data than expected (ingest latency or gaps).
- custom_rules: A detector filter may be suppressing the anomaly.
- high_variance_penalty:指标历史数据噪声大——宽置信区间吸收了峰值。
- 重新归一化:后续出现的更极端异常将此分数压低(>>
initial_record_score)。record_score - 训练历史不足:需要≥3周数据以学习周季节性,对于任何检测到的周期,需要≥2个完整周期的数据。
- bucket_span过大:短持续时间的峰值被平滑。对于高频事件,请使用更小的。
bucket_span - 检测器函数不匹配:vs
mean、high_meanvscount——仅一个方向会触发。high_count - incomplete_bucket_penalty:时间桶接收的数据量少于预期(摄入延迟或数据间隙)。
- custom_rules:检测器过滤器可能抑制了异常。
Why a score might be unexpectedly high
分数异常高的原因
- Insufficient history: Model hasn't learned the normal pattern yet — early anomalies are unreliable.
- Model split thin: High-cardinality or
partition_field→ very few points per entity → unreliable probabilities.by_field - use_null: If , missing entities produce "null" anomalies that may not be meaningful.
use_null: true - Absence / drop detection: With or
low_count,low_meanproduces a legitimately high score — treat as a real incident, not a false positive.actual << typical
- 历史数据不足:模型尚未学习到正常模式——早期异常不可靠。
- 模型拆分过细:高基数的或
partition_field→ 每个实体的数据点极少 → 概率不可靠。by_field - use_null:如果,缺失的实体会产生“null”异常,可能无实际意义。
use_null: true - 缺失/下降检测:使用或
low_count时,low_mean会产生合理的高分数——应视为真实事件,而非误报。actual << typical
Model behavior concepts
模型行为概念
| Concept | Meaning |
|---|---|
| actual | Observed value. typical is what the model expected. The direction matters. |
| Absence anomaly | |
| by_field | Independent baseline per entity (e.g., per host). Each entity compared to its own history. |
| over_field | Population analysis — entity compared to its peer group in the same bucket, not its own history. |
| partition_field | Fully independent sub-models with separate score normalization per partition. |
| 概念 | 含义 |
|---|---|
| actual | 观测值。typical是模型预期的值。方向至关重要。 |
| 缺失异常 | 使用 |
| by_field | 每个实体的独立基线(例如按主机)。每个实体与自身历史数据比较。 |
| over_field | 群体分析——实体与同一时间桶中的对等组比较,而非自身历史数据。 |
| partition_field | 完全独立的子模型,每个分区有单独的分数归一化。 |
Model plot and categories
模型绘图与分类
- Model plot: Shows the model's learned upper and lower bounds at each time point. If is within bounds, no anomaly; if outside, the score depends on the distance from bounds. Only available when
actualis enabled on the job. Query viamodel_plot_configwithPOST /.ml-anomalies-*/_search.result_type: model_plot - Categories: For jobs with a , query
categorization_field_nameto show log message patterns (terms, regex, examples perresult_type: category_definition). Anomaly records usecategory_id.by_field_value = <category_id>
- 模型绘图:展示模型在每个时间点学习到的上下边界。如果在边界内,则无异常;如果在边界外,分数取决于与边界的距离。仅当任务启用
actual时可用。通过model_plot_config查询,参数设置为POST /.ml-anomalies-*/_search。result_type: model_plot - 分类:对于设置了的任务,查询
categorization_field_name以查看日志消息模式(每个result_type: category_definition对应的category_id、terms、regex)。异常记录使用examples。by_field_value = <category_id>
Score troubleshooting protocol
分数排查流程
- List jobs — Call when the job ID is unknown.
GET /_ml/anomaly_detectors - Get job config and stats — Call and
GET /_ml/anomaly_detectors/{job_id}. VerifyGET /_ml/anomaly_detectors/{job_id}/_stats, detector function,bucket_span,custom_rules, job state (opened/closed/failed), anduse_null.model_size_stats.memory_status - Retrieve the record — Call with
POST /.ml-anomalies-*/_search, the job ID, time range, and optional minimumresult_type: record. Inspectrecord_score,initial_record_score,record_score,actual,typical,function, andmulti_bucket_impact.anomaly_score_explanation - Check renormalization — Compare vs
initial_record_score. If initial >> record, re-query records sorted by timestamp and computerecord_scoreto quantify renormalization across the job.score_drift - Visualize model bounds — If is enabled, query
model_plot_configand show where the actual value fell relative toresult_type: model_plotandmodel_lower.model_upper - Influencers — Query for the anomaly bucket time range; sort by
result_type: influencer.influencer_score - Explain factors — From the record's , address each present relevant factor:
anomaly_score_explanation,high_variance_penalty,incomplete_bucket_penalty,anomaly_length,single_bucket_impact. Do not cite factors absent from the record.multi_bucket_impact
- 列出任务 —— 当任务ID未知时,调用。
GET /_ml/anomaly_detectors - 获取任务配置和统计信息 —— 调用和
GET /_ml/anomaly_detectors/{job_id}。验证GET /_ml/anomaly_detectors/{job_id}/_stats、检测器函数、bucket_span、custom_rules、任务状态(opened/closed/failed)以及use_null。model_size_stats.memory_status - 检索记录 —— 调用,参数设置为
POST /.ml-anomalies-*/_search、任务ID、时间范围以及可选的最低result_type: record。检查record_score、initial_record_score、record_score、actual、typical、function和multi_bucket_impact。anomaly_score_explanation - 检查重新归一化 —— 比较与
initial_record_score。如果initial远大于record,重新查询按时间戳排序的记录并计算record_score,以量化任务中的重新归一化情况。score_drift - 可视化模型边界 —— 如果已启用,查询
model_plot_config并展示实际值相对于result_type: model_plot和model_lower的位置。model_upper - 影响因素 —— 查询异常时间桶范围内的;按
result_type: influencer排序。influencer_score - 解释因素 —— 从记录的中,处理每个存在的相关因素:
anomaly_score_explanation、high_variance_penalty、incomplete_bucket_penalty、anomaly_length、single_bucket_impact。请勿引用记录中不存在的因素。multi_bucket_impact
Examples
示例
- "Why is my anomaly score only 15 when the spike looks huge?" → Check renormalization: (~92) >>
initial_record_score(~15). The spike was real; the current score was rescaled down. Use the initial score for alerting.record_score - "Traffic stopped and I got a HIGH score — false positive?" → No. with
low_countfar belowactualis legitimate absence detection. Investigate the outage.typical - "Which entities contributed most to the anomalies in job X last night?" → Query influencers for the time range.
- "Show me the model bounds for this job." → Query model plot when is enabled.
model_plot_config - "List records where the score was renormalized down a lot." → Records sorted by timestamp; filter large
.
initial_record_score − record_score
- “为什么我的异常分数只有15,但峰值看起来很明显?” → 检查重新归一化:(约92)>>
initial_record_score(约15)。峰值是真实的;当前分数被重新调整降低。使用初始分数进行告警。record_score - “流量中断了,我得到了高分——是误报吗?” → 不是。任务中
low_count远低于actual是合理的缺失检测。请调查中断原因。typical - “昨晚任务X的异常主要由哪些实体导致?” → 查询指定时间范围的影响因素。
- “展示此任务的模型边界。” → 当启用时,查询模型绘图。
model_plot_config - “列出分数被大幅重新归一化降低的记录。” → 按时间戳排序的记录;过滤差值较大的记录。
initial_record_score − record_score
Guidelines
指南
- Report only what the API or the user-supplied record contains; do not invent scores, timestamps, entity values, or explanation factors.
- Always show both and
initial_record_scorewhen explaining a record; state explicitly whether renormalization occurred.record_score - When a score factor is missing from the record, do not assert it; note that the field was not returned.
- Do not attribute low scores to or
high_variance_penaltywhen those flags areincomplete_bucket_penaltyor absent in the record.false - For investigation ("what caused this?", "which service is responsible?") query influencers or construct cross-job searches via references/explainer-reference.md.
- For job health use the skill.
elasticsearch-anomaly-detection
- 仅报告API或用户提供的记录中的内容;请勿编造分数、时间戳、实体值或解释因素。
- 解释记录时始终同时显示和
initial_record_score;明确说明是否发生了重新归一化。record_score - 当记录中缺失某个分数因素时,请勿断言其存在;注明该字段未返回。
- 当或
high_variance_penalty标记为incomplete_bucket_penalty或记录中不存在时,请勿将低分数归咎于这些因素。false - 如需调查(“这是什么原因导致的?”、“哪个服务负责?”),请查询影响因素或通过references/explainer-reference.md构建跨任务搜索。
- 如需处理任务健康问题,请使用技能。
elasticsearch-anomaly-detection
Operations
操作
| HTTP API (shorthand) | |
|---|---|
| |
| |
| |
| |
| |
Query body shapes for each (, , , ) are documented in
references/explainer-reference.md.
result_typerecordinfluencermodel_plotcategory_definition| HTTP API(简写) | |
|---|---|
| |
| |
| |
| |
| |
各(、、、)的查询体格式记录在references/explainer-reference.md中。
result_typerecordinfluencermodel_plotcategory_definition