【问题标题】:ELASTICSEARCH - Ordering aggregation by date on nested fieldELASTICSEARCH - 在嵌套字段上按日期排序聚合
【发布时间】:2020-09-04 18:54:02
【问题描述】:

我正在开发一个查询,计算最近的文档包含多少个唯一的“cp”。 json 由几个嵌套字段组成。 当我添加到具有嵌套字段的 json 时,我无法仅显示具有最近日期的 json 值。 我已经完成了嵌套聚合,最后我使用了 top_hits 过滤器按降序排序,它通过大小返回最后一个。 但它仍然返回所有不同日期的文件。

JSON:

      "data" : [
        {
          "addresses" : [
            {
              "cp" : "33.33.33",
              "services" : [
                {
                  "field1" : "true",
                  "field2" : "1234",
                }
              ]
            }
          ],
        }
      ],
      "created_at" : "2020-09-03 14:39:01",
      "@timestamp" : "2020-09-04T05:53:22.341661Z",
    }
  },

查询:

{"size": 0, 
  "aggs": {
    "nested": {
      "nested": {
        "path": "data.addresses"
     
          },
          "aggs": {
            "nested": {
              "nested": {
                "path": "data.addresses.services"
              },
              "aggs": {
                "filter": {
                  "filter": {
                    "term": {
                      "data.addresses.services.field1.keyword": "true"
                    }
                  },
                  "aggs": {
                    "unique": {
                      "cardinality": {
                        "field": "data.addresses.services.field2.keyword"
                      }
                    },
                    "range":{
                      "top_hits": {
                        "size": 1,
                        "sort": [
                          {"created_at.keyword": {"order": "desc"}}]
                      }
                    }
                  }
                }
              }
            }
          }
        }
      }
    

我尝试按预定义字段“created_at”或@timestamp 进行排序,但结果是一样的。 有什么建议可以帮助我解决问题吗?

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    对于这种情况,解决方案是添加

    "order": {
              "_key": "desc":
    

    而不是 top_hits。

    查询

    {"size": 0, 
      "aggs": {
        "filtrofecha": {
          "terms": {
            "field": "created_at.keyword",
            "order": {
              "_key": "desc"
            },
            "size": 1
          },
          "aggs": {
            "nested": {
              "nested": {
                "path": "data.addresses"
                  },
                  "aggs": {
                    "nested": {
                      "nested": {
                        "path": "data.addresses.services"
                      },
                      "aggs": {
                        "filter": {
                          "filter": {
                            "term": {
                              "data.addresses.services.field1.keyword": "true"
                            }
                          },
                          "aggs": {
                            "unique": {
                              "cardinality": {
                                "field": "data.addresses.services.field2.keyword"
                              }
                            }
                          }
                        }
                      }
                    }
                  }
                }
              }
            }
          }
    

    【讨论】:

      猜你喜欢
      • 2017-09-13
      • 2023-04-03
      • 1970-01-01
      • 2015-07-30
      • 1970-01-01
      • 2021-01-30
      • 1970-01-01
      • 2019-10-25
      • 1970-01-01
      相关资源
      最近更新 更多