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

DataWave REST API参考手册:query、plan、lookup、predict等核心接口使用指南

DataWave REST API参考手册:query、plan、lookup、predict等核心接口使用指南

【免费下载链接】datawaveDataWave is an ingest/query framework that leverages Apache Accumulo to provide fast, secure data access.项目地址: https://gitcode.com/gh_mirrors/da/datawave

DataWave 是基于 Apache Accumulo 的开源数据摄取与查询框架,它的 Web 服务通过一套简洁的 REST API 暴露了强大的查询能力。本指南将带你快速掌握 DataWave REST API 中最常用的核心接口——query(创建分页查询)、plan(查询计划预览)、lookup(原始数据回溯)和 predict(查询预测),帮助新手在 10 分钟内跑通第一个查询。

📌 先了解 DataWave 是什么

DataWave 将海量事件数据高效写入 Apache Accumulo,并提供一套完整的 REST 查询接口。你可以把它理解为一个"带安全属性的搜索引擎":查询时不仅要写查询语法,还要声明你的权限(auths),系统会自动根据安全标签过滤结果。

它的 REST 服务整体架构位于 web-services/ 模块下,查询执行的核心逻辑在 BasicQueryBean.java 和 QueryExecutorBean.java 中实现,微服务版的查询接口定义则见 Query.java。

🧩 核心接口全景速览

接口作用典型场景
query创建查询并按页拉取结果日常数据检索
plan查看查询执行计划优化查询性能
lookup按 UID/UUID 回溯原始数据查看命中的原始记录
predict预测查询将命中哪些索引评估查询代价、提前发现错误
count / hit / termFrequency统计命中数、命中摘要、词频聚合分析
edge / mapReduce / cachedResults图分析、MapReduce 查询、结果缓存高级分析场景

项目内置了一套可直接运行的调用脚本,位于 docker/scripts/ 目录,例如 query.sh、plan.sh、lookup.sh、predict.sh,配合公共函数 common/query.sh 演示了标准的调用流程。

🔍 query 接口:创建查询并分页拉取

query 是 DataWave 使用频率最高的接口,采用"先创建、后翻页"的两步式模式:

第一步:创建查询(POST/{queryLogic}/create

核心参数包括:

  • query:查询语句(默认支持 LUCENE 语法,通过query.syntax指定)
  • begin/end:时间范围,格式如19660908 000000.000
  • columnVisibilityauths:安全属性声明
  • pagesize:每页返回条数
  • systemFrom/queryName:调用来源与查询名称(用于审计)

第二步:分页获取(GET/{queryId}/next

创建成功后响应中会返回一个queryId,之后每次调用next接口获取下一页,直到查询结束自动销毁。官方脚本中的标准调用方式可以这样理解:

携带 mTLS 证书(-E ${TMP_PEM})向/EventQuery/create提交参数 → 解析createResponse.xml拿到 queryId → 循环调用/{queryId}/next直到返回非 200 状态码。

完整流程可参考 common/query.sh 中的runQuery函数。

📊 plan 接口:查询前的"成本预估"

在大数据场景下,直接执行一个代价高昂的查询可能拖垮系统。plan 接口允许你只查看执行计划而不真正执行,响应中会列出查询要扫描的索引、预估代价等信息。它最适合在以下场景使用:

  • 上线新查询前验证语法是否正确
  • 排查某个查询为什么慢
  • 确认查询会命中哪些字段索引

调用脚本见 docker/scripts/plan.sh。

🔎 lookup 接口:回溯命中的原始数据

query 返回的是索引层面的结果,如果你需要看到原始记录内容,就用 lookup 接口。它支持按 UID、UUID 等条件回溯,例如按 UUID 查询、获取下一条内容(next)等变体,相关工具类位于 AbstractUUIDLookupCriteria.java 等文件中。

典型用法:query 命中的某条记录 → 用其 UUID 调用 lookup → 获取该事件的全部原始字段。

🔮 predict 接口:预测查询命中范围

predict 接口与 plan 类似,但它聚焦于预测结果集:不返回数据本身,而是告诉你这个查询"会匹配到什么"。对于新手来说,它是调试查询的利器——当你不确定一个 Lucene 查询是否会命中数据时,先 predict 一下,能帮你快速定位是语法问题、索引缺失还是权限不足。

调用示例见 docker/scripts/predict.sh。

🚀 快速上手:三步跑通第一个查询

  1. 准备环境:项目提供 Docker Compose 一键栈,配置文件在 docker/docker-compose.yml,启动后服务会生成 mTLS 证书(PKI 材料见 docker/pki/)。
  2. 复制脚本改参数:打开 docker/scripts/query.sh,修改QUERY(如GENRES:[Action to Western])、时间范围BEGIN/END和权限AUTHS
  3. 执行并翻页:脚本会依次调用 create 和 next 接口,把每页响应保存为nextResponse_1.xml等文件,方便你检查 JSON/XML 返回结构。

⚠️ 注意:DataWave 的 REST API 默认启用mTLS 双向认证,curl 调用时务必带上-k -E client.pem之类的客户端证书参数。

📚 更多接口与进阶玩法

  • 统计类:count.sh(命中计数)、hitHighlights.sh(命中摘要)、termFrequency.sh(词频统计)
  • 图分析:edge.sh 调用 edge 接口做实体关系挖掘
  • 异步/批量:streamingQuery.sh(流式查询)、mapReduceQuery.sh(MapReduce 分布式查询,服务实现见 mapreduce-query/)、cachedResultsQuery.sh(缓存结果复用)
  • Web 查询界面:浏览器端交互入口由 query-websocket/ 提供

🗂️ 相关资源导航

资源路径
REST API 部署配置web-services/rest-api/src/main/webapp/WEB-INF/web.xml
查询执行核心web-services/query/src/main/java/datawave/webservice/query/runner/
查询限流与配额web-services/query/src/main/java/datawave/webservice/query/limit/README.md
微服务查询 API 定义microservices/services/query/api/src/main/java/datawave/microservice/query/Query.java
官方文档站点源码web-services/deploy/docs/docs/index.html

小结:掌握 query(检索)+ plan(预览)+ predict(预测)+ lookup(回溯)这四大核心接口,就覆盖了 DataWave REST API 90% 的日常使用场景。建议从 docker/scripts/ 目录下的示例脚本入手,它们是最直观的"活文档"。

【免费下载链接】datawaveDataWave is an ingest/query framework that leverages Apache Accumulo to provide fast, secure data access.项目地址: https://gitcode.com/gh_mirrors/da/datawave

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

http://www.cnnetsun.cn/news/4175292.html

相关文章:

  • MT Bench 8.12分如何炼成?Starling-LM-7B-beta评测成绩深度解析
  • Backtrader 完整指南:10 分钟跑通量化回测,避开 3 个结果失真的坑
  • upsert 踩坑清单:时区 UTC 转换、类型强校验、事务夹具冲突等 5 个新手常见的 Upsert 陷阱
  • Notepad2:轻量、启动快的免费文本编辑器,支持语法高亮与编码识别
  • Maka Agent:本地优先AI桌面助手如何重塑你的工作流
  • 参与开源贡献:如何为GenLayer Project Boilerplate提交第一个高质量的PR?
  • 为什么不用LoRA?揭秘gpt4-x-alpaca用GPT-4数据全量微调3轮的训练秘诀
  • 10分钟玩转G-Helper:华硕笔记本调校指南
  • 招聘平台四大站一次看全职位发布时间:求职者的完整指南
  • Casdoor API 实战教程:5 步完成第一次接口调用
  • 5 分钟生成整套 OpenCore EFI:OpCore Simplify 黑苹果自动构建工具
  • Buff 系统设计
  • 把PS3游戏跑流畅:RPCS3性能调优与配置完整指南
  • 1.4MB 跑通 107 种语言文本转语音,eSpeak NG 凭什么这么轻?
  • Redisson 与 Spring Boot 版本冲突:3 步定位并解决的排查指南
  • PoB2 物品系统完整流程:从装备模拟到词缀优化的实战指南
  • 一条命令搞定中国省市区街道 sql/json 数据:从克隆到入库指南
  • StableLM-3B-4E1T能力有多强?7项Open LLM Leaderboard基准测试完整分析
  • Wordless 多语言语料库工具避坑指南:安装到启动 4 个高频问题一次解决
  • LeadQualifier 10分钟快速上手:从安装到跑通你的第一个线索资格审查模型
  • AI论文写作工具推荐:5款学术助手怎么选?
  • DeepSeek-V3 检查点解析实战:.safetensors 与权重索引,671B 权重怎么落地
  • 贪心还是采样?Kronos-small NPU 确定性解码的取舍与temperature/top-p概率预测启用方法
  • 5条curl命令搞定Redis同步:RedisSyncer创建、启动、停止与查询任务实战
  • HackRF驱动问题排查:3步跑起来
  • DVWA Web 漏洞靶场保姆级指南:5 分钟跑通,19 个模块带你练完 SQL 注入和 XSS
  • PDFMathTranslate:免费公式级PDF论文翻译
  • 单链表专题
  • 从awesome-python3-webapp到iOS App:跨平台开发实战经验完整指南
  • Xplorer文件管理器完全上手指南:跨平台文件管理一次搞定