当前位置: 首页 > 知识库问答 >
问题:

ElasticSearch如何显示与日期范围聚合匹配的所有文档

赵英范
2023-03-14

以下弹性文件:https://www.elastic.co/guide/en/elasticsearch/reference/current/search-aggregations-bucket-datehistogram-aggregation.html

如何进行日期范围聚合并显示与相关日期段匹配的所有文档,而不是文档计数。

聚合:

{
    "aggs" : {
        "articles_over_time" : {
            "date_histogram" : {
                "field" : "date",
                "interval" : "1M",
                "format" : "yyyy-MM-dd" 
            }
        }
    }
}

回应:

        {
            "aggregations": {
                "articles_over_time": {
                    "buckets": [
                        {
                            "key_as_string": "2013-02-02",
                            "key": 1328140800000,
                            "doc_count": 1
                        },
                        {
                            "key_as_string": "2013-03-02",
                            "key": 1330646400000,
                            "doc_count": 2  //how display whole json ??
                 
                    [ .. Here i want to display 
                           all document with array based 
                           NOT only doc_count:2.......... ]

                        },
                        ...
                    ]
                }
            }
        }

也许我需要做一些子聚合或其他什么?

有什么想法吗?

共有2个答案

梁丘高朗
2023-03-14

然而,正如Sumit所说,我认为您真正想要的是创建一个具有日期范围的过滤器:

https://www.elastic.co/guide/en/elasticsearch/reference/2.3/query-dsl-range-query.html#ranges-on-dates

这样您就可以过滤掉不在日期范围内的文档,并且只保留正确的文档。然后您可以对结果做任何您想做的事情。

岳劲
2023-03-14

您必须在日期直方图上执行top\u hits子聚合。从这里可以读取所有选项。

最终的聚合结果是这样的

{
  "aggs": {
    "articles_over_time": {
      "date_histogram": {
        "field": "date",
        "interval": "1M",
        "format": "yyyy-MM-dd"
      },
      "aggs": {
        "documents": {
          "top_hits": {
            "size": 10
          }
        }
      }
    }
  }
}
 类似资料:
  • 问题内容: 这个问题已经在这里有了答案 : 从日期范围生成天数 (29个答案) 7年前关闭。 我想显示a 和MySQL中的日期之间的所有日期。 例如,具有和字段的表中的数据为: 日期是和 日期, 我想要的结果是: 如何仅使用MySQL查询来实现此目的(而不必使用存储过程,因为我对此并不熟悉)? 编辑: 尽管我仍然没有完全得到想要的结果,但是这里的答案很有帮助。在此示例中,它仅成功运行,但不输出任何

  • 问题内容: 嗨,我有供cpu使用的文档,其中包含date_time字段。现在,我想查找日期范围内的avg cpu用法。我想出了以下解决方案。如果我是Elastic Search的新手,请告诉我是否有任何先进或更好的方法。 现在,上面的查询返回我期望的文档,该文档在/日期范围内。现在,我要做的是,使用这些文档找到所有唯一的日期,并将这些唯一的日期组合存储在中,然后针对其中的所有项目执行以下查询 现在

  • 是否可以在elasticsearch中更改范围聚合结果的排序?我在elasticsearch中有一个键控范围查询,并希望根据键而不是doc_count进行排序。 我的文件是: 和聚合查询: 此查询的结果是: 我想根据关键字对结果进行排序,而不是根据范围值。根据elasticsearch文档,无法指定排序顺序,当指定排序顺序时,我得到以下异常: 你有什么办法吗?谢谢!

  • 我正试图使用Elasticsearch php 6.0构建一个分面搜索,但我很难想出如何使用日期范围聚合。以下是我想要做的: 映射示例: 在我的文档中,我有以下属性: 我希望能够使用日期范围滑块显示一个方面,用户可以在其中输入一个范围(最小值-最大值)。理想情况下,给定当前查询,这些最小值-最大值应该由Elasticsearch聚合自动返回。 这是我试图用“伪代码”编写的聚合,给你一个想法: 我认

  • **我试图聚合和找到价格范围,如果在基础上的嵌套报价数组(嵌套数组)的sellerInfoES对象。内部字段是"offerPrice"。如何在Elasticsearch中的嵌套数组字段上编写聚合。我尝试了以下查询,但它不工作。获取此错误:解析失败[在[price_ranges]中找到两个聚合类型定义:[嵌套]和[过滤器]] 映射: 查询:

  • > 每个对象表示一个重复发生的事件。该事件可以在多个日期发生。因此,请考虑以下内容: 我有一个日历在客户端,用户可以选择一个日期范围。 > 对所选日期范围的每个条目进行调用,并在客户端处理聚合。问题是会有大量的读取,因为我们会多次读取重叠的日期范围内的同一个列表对象。 尝试使用类似ElasticSearch/Algolia的服务来完成此操作 任何建议都会很有帮助!