es 多字段去重

es 多字段去重

最近有个需求困扰我,es中根据json里的几个字段对数据进行去重统计操作,网上找了很多文章都说不清,发现也有很多人有这个问题。本来想着用聚合统计来操作,根据那几个字段分组统计之后在一次一层揭破,但是效率实在是太低了,经过几天的探索一无所获,一气之下直接史塔克over佛罗走起

上代码!
在这里插入图片描述


{
  "size": 0,
  "query": {
    "bool": {
      "filter": [
        {
          "terms": {
            "site_id": [
              7560,
              7566
            ]
          }
        },
        {
          "range": {
            "date": {
              "gte": "2021-09-01",
              "lte": "2021-09-15"
            }
          }
        }
      ]
    }
  },
  "aggs": {
    "group_by": {
      "terms": {
        "field": "site_id",
        "size": 100
      },
      "aggs": {
        "bydate": {
          "terms": {
            "field": "date",
            "size": 100
          },
          "aggs": {
            "byhour": {
              "terms": {
                "field": "hour",
                "size": 24
              },
              "aggs": {
                "uv": {
                  "cardinality": {
                    "script": "doc['maid.keyword'].value + '#' +doc['date'].value"
                  }
                }
              }
            }
          }
        }
      }
    }
  }
}

关键字就是这个cardinality
喜欢点点赞,你的小红心就是我前进的动力❤

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐