Opensearch/ElasticSearch-ctx查询内容不全的问题

问题

在OpenSearch中,我希望在action中把一整条log作为报警内容发送出来,但是根据文档,配置为ctx.results.0.hits.hits.0._source.log,但是发现根本找不到这个值

经过查询,我发现在返回的ctx中仅存在如下的值

复制代码
results=[, hits=, max_score=null}, took=13, timed_out=false}], periodStart=2024-07-08T08:30:07.425Z, periodEnd=2024-07-08T08:31:07.425Z, error=null, trigger={id=GkWmgZABvp-0qNhTa6Rs, name=Test alarm, please ignore, severity=3, actions=[{name=Test alarm, please ignore}]}, alert={acknowledged_time=null, id=sHdKkZABDnp5EchiGRFG, version=-1, end_time=null, error_message=null, execution_id=HEWmgZABvp-0qNhTa6R5_2024-07-08T07:41:09.151397924_6ca4e795-58a9-489d-85fe-74c4bbf2d9ab, workflow_id=, workflow_name=, associated_alert_ids=[], last_notification_time=1720426150054, severity=3, start_time=1720424470852, state=ACTIVE, bucket_keys=null, parent_bucket_path=null, finding_ids=, related_doc_ids=}}

没有我需要的

查询语句为

复制代码
{
    "size": 0,
    "query": {
        "bool": {
            "filter": [
                {
                    "range": {
                        "@timestamp": {
                            "from": "{{period_end}}||-1d",
                            "to": "{{period_end}}",
                            "include_lower": true,
                            "include_upper": true,
                            "format": "epoch_millis",
                            "boost": 1
                        }
                    }
                },
                {
                    "query_string": {
                        "query": "*BATCHMONITORING*",
                        "default_field": "log",
                        "fields": [],
                        "type": "best_fields",
                        "default_operator": "or",
                        "max_determinized_states": 10000,
                        "enable_position_increments": true,
                        "fuzziness": "AUTO",
                        "fuzzy_prefix_length": 0,
                        "fuzzy_max_expansions": 50,
                        "phrase_slop": 0,
                        "escape": false,
                        "auto_generate_synonyms_phrase_query": true,
                        "fuzzy_transpositions": true,
                        "boost": 1
                    }
                }
            ],
            "adjust_pure_negative": true,
            "boost": 1
        }
    }
}

解决方案

经过查询,我发现问题存在于size这个参数

size: 这指定了返回的文档数量。在这里设为 0 表示只返回匹配的聚合结果,而不返回实际的文档内容。

我这边把size:0从查询语句中删除后,返回的结果终于包含了我需要的参数

其他参数解释

  • query: 这是查询的主体,使用布尔查询(bool query),允许将多个过滤条件组合在一起。
  • bool : 布尔查询允许组合多个查询子句,如 filtermustmust_not 等。
  • filter: 这是一个过滤器子句,它包含了两个过滤条件。
  • range : 范围查询,用于限制 @timestamp 字段的范围。具体来说:
    • "from": "{``{period_end}}||-1d":表示从 period_end 变量指定的时间开始,向前推一天。{``{period_end}} 是一个模板变量,在实际执行时会被具体的时间值替换。
    • "to": "{``{period_end}}":表示到 period_end 变量指定的时间结束。
    • "format": "epoch_millis":指定时间格式为毫秒级时间戳。
    • "include_lower": true, "include_upper": true:包括上下界值。
  • query_string : 查询字符串查询,用于搜索包含指定关键字的文档。
    • "query": "*BATCHMONITORING*":这里的查询字符串是通配符形式,表示搜索包含 "BATCHMONITORING" 关键字的文档。
    • "default_field": "log":指定默认搜索字段为 "log"。
    • "default_operator": "or":默认操作符为 OR 操作符,表示任何一个关键字匹配即可。
    • 其他参数如 fuzzinessphrase_slop 等是调整查询行为的参数,如自动模糊匹配、短语搜索等。
  • adjust_pure_negative : 设置为 true,表示查询结果中不包含全负匹配的文档。
  • boost : 设置为 1,表示默认的查询权重。
相关推荐
ACP广源盛139246256732 小时前
国产算力互联IX8024@ACP#Kimi K3 开源后的端侧部署硬件架构分析
大数据·人工智能·分布式·单片机·嵌入式硬件
霁月的小屋2 小时前
Docker 工程化实践(二):理解镜像分层与容器文件系统
运维·docker·容器
Android系统攻城狮2 小时前
Linux PipeWire深度解析之pw_context_add_spa_lib调用流程与实战(二十九)
linux·运维·服务器·音频进阶·pipewire音频进阶
商业模式源码开发2 小时前
小米新车未发布即遭 AI 谣言攻击:黑色 GEO 的运作原理与企业正规防御方案
大数据·人工智能·ai·geo
Dovis(誓平步青云)2 小时前
《如何在CentOS 7中添加Plex官方软件源:解决文件磁盘难管理难题》
linux·运维·服务器·后端·生成对抗网络·centos
edtoplort3 小时前
A股最大IPO长鑫科技295亿:从年亏163亿到日赚3亿
大数据·人工智能·科技
草莓熊Lotso3 小时前
【Linux网络】深入理解Linux IO多路复用:select服务器完善、内核原理与poll实战
linux·运维·服务器·c语言·网络·c++
深念Y3 小时前
MSYS2 是什么,要不要装?
运维·环境·开发·工具·msys2
网安老伯3 小时前
网络安全基础要点知识介绍(非常详细),零基础入门到精通,看这一篇就够了
运维·前端·网络协议·web安全·网络安全·职场和发展
迷茫中的自我3 小时前
GitHub Actions自动化运维实战:从CI/CD到云原生部署
运维·自动化·github