ElasticSearch系列 - SpringBoot整合ES:restHighLevelClient.count(countRequest, RequestOptions.DEFAULT)

这篇具有很好参考价值的文章主要介绍了ElasticSearch系列 - SpringBoot整合ES:restHighLevelClient.count(countRequest, RequestOptions.DEFAULT)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

restHighLevelClient.count(countRequest, RequestOptions.DEFAULT) 是 Elasticsearch Java High Level REST Client 中用于执行计数请求的方法。

具体来说,它接受两个参数:

  • countRequest:一个 CountRequest 对象,表示计数请求的参数,包括要计数的索引、查询条件等。
  • RequestOptions.DEFAULT:一个 RequestOptions 对象,表示请求选项,包括连接超时、响应超时等。

该方法会返回一个 CountResponse 对象,表示计数请求的结果,包括符合查询条件的文档数量等信息。

① 示例代码:

CountRequest countRequest = new CountRequest("my_index");
countRequest.query(QueryBuilders.matchQuery("my_field", "my_value"));

CountResponse countResponse = restHighLevelClient.count(countRequest, RequestOptions.DEFAULT);
long count = countResponse.getCount();

这个示例代码执行了一个计数请求,查询 my_index 索引中 my_field 字段等于 my_value 的文档数量,并将结果保存在 count 变量中。

② 示例代码:

@Override
public Long countDealAlert(Long startTimestamp, Long endTimestamp) throws IOException {
    BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
    // 处置状态=已处置+处置中
    boolQueryBuilder.must(QueryBuilders.termsQuery("dealStatus", List.of(DealStatusEnum.DISPOSED.getStatusCode(), DealStatusEnum.DISPOSING.getStatusCode())));
    
    // 时间范围
    RangeQueryBuilder timeRangeQueryBuilder = QueryBuilders.rangeQuery("lastTime");
    timeRangeQueryBuilder.gte(timeStampToDate(startTimestamp * 1000L));
    timeRangeQueryBuilder.lte(timeStampToDate(endTimestamp * 1000L));
    boolQueryBuilder.must(timeRangeQueryBuilder);
    
    CountRequest countRequest = new CountRequest(SaasEsFactory.getTenantIndex(DatabaseConstants.ALERT));
    countRequest.query(boolQueryBuilder);
    log.info("count alerts, es search dsl: {}", boolQueryBuilder);
    StopWatch stopWatch = new StopWatch();
    stopWatch.start();
    CountResponse countResponse = restHighLevelClient.count(countRequest, RequestOptions.DEFAULT);
    log.info("告警统计结束,花费时间: {}", stopWatch.getTotalTimeMillis());
    return countResponse.getCount();
}

用于统计某个时间范围内处置状态为“已处置”或“处置中”的告警数量。具体实现如下:文章来源地址https://www.toymoban.com/news/detail-718203.html

  1. 首先创建一个布尔查询构建器(BoolQueryBuilder),用于构建查询条件。
  2. 将“处置状态”限定为“已处置”或“处置中”,使用termsQuery方法构建查询条件。
  3. 将时间范围限定为startTimestamp和endTimestamp之间,使用rangeQuery方法构建查询条件。
  4. 将上述两个查询条件合并为一个布尔查询条件,使用must方法。
  5. 创建一个计数请求(CountRequest),指定要查询的索引(DatabaseConstants.ALERT)和查询条件。
  6. 使用RestHighLevelClient的count方法执行查询,并返回查询结果中的计数值。

到了这里,关于ElasticSearch系列 - SpringBoot整合ES:restHighLevelClient.count(countRequest, RequestOptions.DEFAULT)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • ElasticSearch系列 - SpringBoot整合ES:多个精确值查询 terms

    ElasticSearch - SpringBoot整合ES:多个精确值查询 terms 01. ElasticSearch terms 查询支持的数据类型 在Elasticsearch中,terms查询支持多种数据类型,包括: 字符串类型:可以将多个字符串值作为数组传递给terms查询,以匹配包含任何一个指定字符串值的文档。 数值类型:可以将多个数值作

    2024年02月16日
    浏览(69)
  • ElasticSearch系列 - SpringBoot整合ES:组合多个查询条件 bool 查询

    01. ElasticSearch 布尔查询是什么? 在实际应用中,我们很有可能会查询多个值或字段。 一个 bool 查询由三部分组成: must:所有的语句都必须(must) 匹配,与 AND 等价。 must_not:所有的语句都不能(must not)匹配,与 NOT 等价。 should:至少有一个语句要匹配,与 OR 等价。 02.

    2023年04月08日
    浏览(72)
  • ElasticSearch系列 - SpringBoot整合ES之全文搜索匹配查询 match

    官方文档地址:https://www.elastic.co/guide/en/elasticsearch/reference/index.html 权威指南:https://www.elastic.co/guide/cn/elasticsearch/guide/current/structured-search.html 1. 数据准备 官方测试数据下载地址:https://download.elastic.co/demos/kibana/gettingstarted/accounts.zip ,数据量很大,我们自己构造数据吧。 2. m

    2023年04月08日
    浏览(51)
  • ElasticSearch系列 - SpringBoot整合ES:实现搜索结果排序 sort

    00. 数据准备 01. Elasticsearch 默认的排序方式是什么? ElasticSearch 默认的排序方式是相关性排序。相关性排序是根据查询条件与文档的匹配程度来计算每个文档的相关性得分,然后按照得分从高到低进行排序。相关性排序是 ElasticSearch 中最常用的排序方式,因为它可以根据查询

    2024年02月02日
    浏览(51)
  • ElasticSearch系列 - SpringBoot整合ES:短语匹配查询 match_phrase

    1. ElasticSearch match_phrase查询是什么?它与match查询有什么区别? match_phrase查询是一种用于匹配短语的查询方式,可以用于精确匹配多个单词组成的短语。它会将查询字符串分解成单词,然后按照顺序匹配文档中的单词,只有当文档中的单词顺序与查询字符串中的单词顺序完全

    2024年02月12日
    浏览(50)
  • ElasticSearch系列 - SpringBoot整合ES:映射中定义字段的数据类型及属性

    ElasticSearch - SpringBoot整合ES:映射定义字段的数据类型及属性 01. ElasticSearch 搜索结果的准确性和召回率是什么? 在Elasticsearch中,搜索结果的准确性和召回率是非常重要的指标,它们反映了搜索引擎的性能和效果。以下是这两个指标的定义和解释: 准确性:搜索结果的准确性

    2024年02月08日
    浏览(46)
  • ElasticSearch系列 - SpringBoot整合ES:多字段查询 multi_match

    1. 什么是 ElasticSearch 的 multi_match 查询? 有时用户需要在多个字段中查询,除了使用布尔查询封装多个match查询之外,可替代的方案是使用multi_match。可以在multi_match的query子句中组织数据匹配规则,并在fields子句中指定需要搜索的字段列表。 以下是一个示例multi-match查询

    2023年04月21日
    浏览(64)
  • ElasticSearch系列 - SpringBoot整合ES:查询字段不为空的文档 exists

    1. ElasticSearch exists 查询是什么 在某些场景下,我们希望找到某个字段不为空的文档,则可以用exists搜索。字段不为空的条件有: 值存在且不是 null; 值不是空数组; 值是数组,但不是 [null] 例如,查询在字段中至少有一个非空值的文档: 这些文档都将匹配上面的查询: ①

    2024年02月06日
    浏览(72)
  • ElasticSearch系列 - SpringBoot整合ES:指定搜索结果返回的字段_source

    Elasticsearch的搜索结果可以通过以下参数进行控制: from:指定搜索结果的起始位置,默认为0。 size:指定返回的文档数量,默认为10。 sort:指定搜索结果的排序方式,可以按照字段升序或降序排列。 query:指定搜索的查询条件,可以使用各种查询语句进行搜索。 filter:指定

    2024年02月04日
    浏览(49)
  • ElasticSearch系列 - SpringBoot整合ES:查询条件 query 和过滤条件 filter 的区别

    01. Elasticsearch 查询条件和过滤条件的区别? Elasticsearch中的查询条件和过滤条件都是用于搜索和过滤文档的条件,但它们之间有一些区别。 查询条件是用于计算文档相关度得分的条件,它会将所有符合条件的文档按照相关度得分从高到低排序,并返回前N个文档。查询条件可以

    2024年02月14日
    浏览(57)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包