当前位置: 首页 > article >正文

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,表示默认的查询权重。

http://www.kler.cn/a/544571.html

相关文章:

  • Python从0到100(八十八):LSTM网络详细介绍及实战指南
  • 基于千兆5G网关的5G急救车方案
  • git用法(简易版)
  • SSH 代理与私钥持久化:让你的开发环境不再因重启而中断
  • windows系统 从 Hugging Face网站上使用 huggingface-cli 命令下载AI大模型到本地
  • 模糊聚类分析方法:从模糊等价矩阵到动态分类
  • 【Java常用】注解与反射_2.反射
  • Windows 图形显示驱动开发-概述
  • .NET 9.0 的 Blazor Web App 项目,进度条 <progress> 组件使用注意事项
  • 相机闪光灯拍照流程分析
  • 生成式AI应用提示注入攻击防御解决方案(上)
  • 渗透测试--文件包含漏洞
  • 编程语言错误处理机制的演变与 Go 的实践
  • 华为支付-商户基础支付场景开发步骤
  • 2025 西湖论剑wp
  • Baumer集成一体式相机堡盟一体式相机相机如何通过NeoAPI SDK使用自动对焦功能和可分区光源控制功能(C#)
  • 【闲谈集】学网络应用开发好还是学网络安全好?
  • 【Docker】从瀑布开发到敏捷开发
  • 从零开始:Django初学者的实战之旅
  • iMC U-Center开局部署、备份方案及授权介绍