速看,ElasticSearch如何处理空值《玩转ElasticSearch 4》-2

本文涉及的产品
Elasticsearch Serverless通用抵扣包,测试体验金 200元
简介: 速看,ElasticSearch如何处理空值《玩转ElasticSearch 4》

Data Range

通过指定日期的范围来设定分桶规则,如对timestamp字段按照设定的时间段来分桶。

post /kibana_sample_data_flights/_search
{
  "size":0,
  "aggs":{
    "data_range_timestamp":{
      "date_range":{
        "field":"timestamp",
        "format":"yyyy-MM",
        "ranges":[
          {"from":"2022-01","to":"2022-02"},
          {"from":"2022-02","to":"2022-03"}
        ]
      }
    }
  }
}

返回结果,思考一下如果想要设置固定的key值应该怎么设置呢?还有要注意的是日期格式yyyy-MM-dd HH:mm:ss

"aggregations" : {
    "data_range_timestamp" : {
      "buckets" : [
        {
          "key" : "2022-01-2022-02",
          "from" : 1.6409952E12,
          "from_as_string" : "2022-01",
          "to" : 1.6436736E12,
          "to_as_string" : "2022-02",
          "doc_count" : 9580
        },
        {
          "key" : "2022-02-2022-03",
          "from" : 1.6436736E12,
          "from_as_string" : "2022-02",
          "to" : 1.6460928E12,
          "to_as_string" : "2022-03",
          "doc_count" : 1837
        }
      ]
    }
  }

Historgram

直方图,以固定间隔的策略来分割数据,如对AvgTicketPrice字段按照100的间隔进行分桶


  • interval :每次间隔50
  • min_doc_count :存在的文档数最少是0条
  • extended_bounds :此值只有当min_doc_count 为0时才具有意义

在实现时你会发现extended_bounds不过滤桶。extended_bounds.min高于从文档中提取的值,那么文档仍然会规定第一个存储段将是什么(对于extended_bounds.max和最后一个存储段也是如此)。为了过滤桶,您应该将直方图聚合嵌套在范围过滤器聚合中,并使用适当的从/到设置

post /kibana_sample_data_flights/_search
{
  "size":0,
  "aggs":{
    "price_histogram":{
      "histogram": {
        "field": "AvgTicketPrice",
        "interval": 50,
        "min_doc_count":"0",
        "extended_bounds":{
          "min":0,
          "max":600
        }
      }
    }
  }
}

返回结果:

"aggregations" : {
    "price_histogram" : {
      "buckets" : [
        {
          "key" : 0.0,
          "doc_count" : 0
        },
        {
          "key" : 50.0,
          "doc_count" : 0
        },
        {
          "key" : 100.0,
          "doc_count" : 380
        },
        {
          "key" : 150.0,
          "doc_count" : 369
        },
        {
          "key" : 200.0,
          "doc_count" : 398
        }
      ]
    }
  }


Data histogram

针对日期的直方图或者柱状图,是时序数据分析中常用的聚合分析类型,如对timestamp字段按照月的间隔进行分桶

post /kibana_sample_data_flights/_search
{
  "size":0,
  "aggs":{
    "timestamp_data_histogram":{
      "date_histogram": {
        "field": "timestamp",
        "interval": "month",
        "min_doc_count": 0,
        "format": "yyyy-MM-dd",
        "extended_bounds": {
          "min": "2021-10-10",
          "max": "2022-01-19"
        }
      }
    }
  }
}

返回结果:

"aggregations" : {
    "timestamp_data_histogram" : {
      "buckets" : [
        {
          "key_as_string" : "2021-10-01",
          "key" : 1633046400000,
          "doc_count" : 0
        },
        {
          "key_as_string" : "2021-11-01",
          "key" : 1635724800000,
          "doc_count" : 0
        },
        {
          "key_as_string" : "2021-12-01",
          "key" : 1638316800000,
          "doc_count" : 1642
        },
        {
          "key_as_string" : "2022-01-01",
          "key" : 1640995200000,
          "doc_count" : 9580
        },
        {
          "key_as_string" : "2022-02-01",
          "key" : 1643673600000,
          "doc_count" : 1837
        }
      ]
    }
  }

二、嵌套查询

上文中列举了五种分桶的实现,在实际开发中只是单一的进行聚合查询是非常少的,大多情况下都是会进行嵌套操作。

先根据机票进行分桶后,再对分桶后的数据取总数、最小值、最大值、平均值、总和

post /kibana_sample_data_flights/_search
{
  "size":0,
  "aggs":{
    "price_range":{
      "range": {
        "field": "AvgTicketPrice",
        "ranges": [
          {"to":300},
          {"from":300,"to":600},
          {"from":600}
        ]
      },
      "aggs":{
        "price_status":{
          "stats": {
            "field": "AvgTicketPrice"
          }
        }
      }
    }
  }
}

返回结果(返回结果截取显示了)

"aggregations" : {
    "price_range" : {
      "buckets" : [
        {
          "key" : "*-300.0",
          "to" : 300.0,
          "doc_count" : 1816,
          "price_status" : {
            "count" : 1816,
            "min" : 100.0205307006836,
            "max" : 299.9529113769531,
            "avg" : 212.5348257619379,
            "sum" : 385963.2435836792
          }
        }
      ]
    }
  }
相关实践学习
以电商场景为例搭建AI语义搜索应用
本实验旨在通过阿里云Elasticsearch结合阿里云搜索开发工作台AI模型服务,构建一个高效、精准的语义搜索系统,模拟电商场景,深入理解AI搜索技术原理并掌握其实现过程。
ElasticSearch 最新快速入门教程
本课程由千锋教育提供。全文搜索的需求非常大。而开源的解决办法Elasricsearch(Elastic)就是一个非常好的工具。目前是全文搜索引擎的首选。本系列教程由浅入深讲解了在CentOS7系统下如何搭建ElasticSearch,如何使用Kibana实现各种方式的搜索并详细分析了搜索的原理,最后讲解了在Java应用中如何集成ElasticSearch并实现搜索。  
相关文章
|
缓存 监控 Java
【Elasticsearch专栏 09】深入探索:Elasticsearch如何处理并发写入和读取请求
Elasticsearch通过分片机制分散读写请求,利用事务日志确保数据持久性,通过多线程处理并发请求,并允许通过配置调整分片和副本数量、线程池设置来优化并发性能。同时,使用批量操作和查询优化进一步提高写入和读取效率。
389 0
|
SQL 安全 数据挖掘
Elasticsearch如何聚合查询多个统计值,如何嵌套聚合?并相互引用,统计索引中某一个字段的空值率?语法是怎么样的?
Elasticsearch聚合查询用于复杂数据分析,包括统计空值率。示例展示了如何计算字段`my_field`非空非零文档的百分比。查询分为三步:总文档数计数、符合条件文档数计数及计算百分比。聚合概念涵盖度量、桶和管道聚合。脚本在聚合中用于动态计算。常见聚合类型如`sum`、`avg`、`date_histogram`等。组合使用可实现多值统计、嵌套聚合和空值率计算。[阅读更多](https://zhangfeidezhu.com/?p=515)
529 0
Elasticsearch如何聚合查询多个统计值,如何嵌套聚合?并相互引用,统计索引中某一个字段的空值率?语法是怎么样的?
|
存储 自然语言处理 搜索推荐
【Elasticsearch专栏 06】深入探索:Elasticsearch如何处理倒排索引中的分词问题
Elasticsearch通过内置和可定制的分词器及过滤器处理倒排索引中的分词问题,确保文本被拆分成合适的词条并优化存储,为全文搜索等提供高效支持。用户可通过分析API测试和调整分词效果。
192 3
|
SQL 数据建模 索引
Elasticsearch 空值处理实战指南
1、引言 实战业务场景中,经常会遇到定义空值、检索指定空值数据的情况。 这时候,当我们翻看官方文档 null_value 部分,会看到如下的描述: Accepts a string value which is substituted for any explicit null values. Defaults to null, which means the field is treated as missing. 接受一个字符串值替换所有显式的空值。默认为null,这意味着该字段被视为丢失。 A null value cannot be indexed or searched. W
Elasticsearch 空值处理实战指南
|
自然语言处理 关系型数据库 MySQL
速看,ElasticSearch如何处理空值《玩转ElasticSearch 4》-1
速看,ElasticSearch如何处理空值《玩转ElasticSearch 3》
448 0
速看,ElasticSearch如何处理空值《玩转ElasticSearch 4》-1
|
关系型数据库 MySQL 索引
速看,ElasticSearch如何处理空值《玩转ElasticSearch 3》-3
速看,ElasticSearch如何处理空值《玩转ElasticSearch 3》
302 0
|
8月前
|
安全 Java Linux
Linux安装Elasticsearch详细教程
Linux安装Elasticsearch详细教程
1388 64
|
7月前
|
JSON 安全 数据可视化
Elasticsearch(es)在Windows系统上的安装与部署(含Kibana)
Kibana 是 Elastic Stack(原 ELK Stack)中的核心数据可视化工具,主要与 Elasticsearch 配合使用,提供强大的数据探索、分析和展示功能。elasticsearch安装在windows上一般是zip文件,解压到对应目录。文件,elasticsearch8.x以上版本是自动开启安全认证的。kibana安装在windows上一般是zip文件,解压到对应目录。elasticsearch的默认端口是9200,访问。默认用户是elastic,密码需要重置。
3446 0
|
存储 安全 数据管理
如何在 Rocky Linux 8 上安装和配置 Elasticsearch
本文详细介绍了在 Rocky Linux 8 上安装和配置 Elasticsearch 的步骤,包括添加仓库、安装 Elasticsearch、配置文件修改、设置内存和文件描述符、启动和验证 Elasticsearch,以及常见问题的解决方法。通过这些步骤,你可以快速搭建起这个强大的分布式搜索和分析引擎。
463 5
|
NoSQL 关系型数据库 Redis
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo
mall在linux环境下的部署(基于Docker容器),docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongodb、minio详细教程,拉取镜像、运行容器
mall在linux环境下的部署(基于Docker容器),Docker安装mysql、redis、nginx、rabbitmq、elasticsearch、logstash、kibana、mongo