跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Javajava

ELK 7.7.1 多条件查询实战:Java API 构建 BoolQuery

ELK 7.7.1 环境下利用 Java 客户端执行多条件搜索的典型实践。通过 BoolQueryBuilder 组合 Term 查询(匹配 _id 与 _index)及 Range 查询(限定 @timestamp 时间范围),实现精确数据过滤。代码展示了 SearchRequest 构建、超时设置及 SearchResponse 结果集遍历的处理逻辑,适用于日志检索等场景。

RustyLab发布于 2020/6/24更新于 2026/6/1831 浏览
ELK 7.7.1 多条件查询实战:Java API 构建 BoolQuery

ELK 7.7.1 多条件查询实战

在使用 Elasticsearch 进行复杂检索时,单一条件往往无法满足需求。通过 Java High Level REST Client,我们可以灵活组合多个查询条件。下面是一个具体的示例,演示如何同时指定索引名、文档 ID 以及时间范围。

核心在于使用 BoolQueryBuilder 的 must 子句来确保所有条件都被满足。这里我们分别对 _id、_index 和 @timestamp 字段进行了约束。

public void test() {
    try {
        getClient();
        SearchRequest searchRequest = new SearchRequest("tomcat1-7.7.1-2020.06.22");
        BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
        
        // 精确匹配文档 ID
        TermQueryBuilder termQueryBuilder = new TermQueryBuilder("_id", "GYvx2nIBOcu5RyqDeLFr");
        boolQueryBuilder.must(termQueryBuilder);
        
        // 限制索引名称
        TermQueryBuilder termQueryBuilder2 = new TermQueryBuilder("_index", "tomcat1-7.7.1-2020.06.22");
        boolQueryBuilder.must(termQueryBuilder2);
        
        // 时间范围查询
        RangeQueryBuilder rangeQueryBuilder = QueryBuilders.rangeQuery("@timestamp");
        rangeQueryBuilder.gte("2020-06-20T16:00:00.000Z");
        rangeQueryBuilder.lte("2020-06-27T15:59:59.999Z");
        boolQueryBuilder.must(rangeQueryBuilder);
        
        SearchSourceBuilder searchSourceBuilder = new SearchSourceBuilder();
        searchSourceBuilder.query(boolQueryBuilder);
        searchSourceBuilder.from(0);
        searchSourceBuilder.size(5);
        searchSourceBuilder.timeout(new TimeValue(60, TimeUnit.SECONDS));
        
        searchRequest.source(searchSourceBuilder);
        
        // 执行查询
        SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
        SearchHits hits = searchResponse.getHits();
        TotalHits totalHits = hits.getTotalHits();
        long numHits = totalHits.value;
        SearchHit[] searchHits = hits.getHits();
        
        for (SearchHit hit : searchHits) {
            String index = hit.getIndex();
            String id = hit.getId();
            float score = hit.getScore();
            String sourceAsString = hit.getSourceAsString();
            Map<String, Object> sourceAsMap = hit.getSourceAsMap();
            System.out.println(sourceAsMap);
        }
    } catch (Exception e) {
        e.printStackTrace();
    } finally {
        closeClient();
    }
}

这段代码中,timeout 设置允许查询最多运行 60 秒,防止长时间阻塞。获取结果后,通过 SearchHit 可以访问到索引名、ID、分数以及原始数据源。实际开发中,建议根据业务需求调整 size 和分页参数。

目录

  1. ELK 7.7.1 多条件查询实战
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • Three.js 与 Cesium 整合技术概览
  • 通过官方 API 搭建 QQ 群聊机器人
  • 大语言模型(LLMs)全面学习指南
  • 基于 LLaMA-Factory 的 LLM DPO 训练实战
  • BettaFish 多智能体系统 Docker 部署指南
  • Xray Web 漏洞扫描器使用指南
  • Java 7 32 位及 64 位 Windows 安装包介绍
  • Flutter Web 混合开发:构建跨平台 Web 应用
  • 基于 OpenClaw 与优云智算的公众号 AI 自动化创作发布流程
  • GLM-4.5 深度技术解析:智谱 AI 全能开源基座模型
  • SkyWalking Python 应用分布式追踪实战指南
  • AIGC 产品经理面试指南:从 0 到 1 的核心能力与考点拆解
  • Naiz AI:基于语义与视觉的视频全链路本地化技术解析
  • Rocky Linux 9.6 英伟达显卡驱动安装指南
  • 主流 AI 生成 UI 设计工具推荐与使用建议
  • 主流 AI 生成 UI 工具盘点:支持可编辑源文件与代码导出
  • 主流 AI 生成 UI 设计工具盘点:支持可编辑源文件与代码导出
  • 几款支持免费额度的 AI UI 设计工具推荐
  • 量化、算子融合、内存映射:C 语言实现 AI 推理优化
  • Claude Code 本地安装与环境配置指南

相关免费在线工具

  • Keycode 信息

    查找任何按下的键的javascript键代码、代码、位置和修饰符。 在线工具,Keycode 信息在线工具,online

  • Escape 与 Native 编解码

    JavaScript 字符串转义/反转义;Java 风格 \uXXXX(Native2Ascii)编码与解码。 在线工具,Escape 与 Native 编解码在线工具,online

  • JavaScript / HTML 格式化

    使用 Prettier 在浏览器内格式化 JavaScript 或 HTML 片段。 在线工具,JavaScript / HTML 格式化在线工具,online

  • JavaScript 压缩与混淆

    Terser 压缩、变量名混淆,或 javascript-obfuscator 高强度混淆(体积会增大)。 在线工具,JavaScript 压缩与混淆在线工具,online

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online