用户画像之标签查询(附源码)

转自:https://blog.csdn.net/appearb...

目录

1.简介

2.架构图

3.表结构

4.标签筛选人群

1.请求格式

2.人群筛选


1.简介

通过处理数仓中的业务数据和埋点数据,生成用户对应的标签,运营人员通过标签筛选出人群,然后发送营销短信。

此文主要描述标签筛选人群

2.架构图

用户画像之标签查询(附源码)_第1张图片

  1. 数据来源:业务数据库和埋点数据
  2. 标签生成:运营人员定义好标签元数据后,数据工程师写hive或spark定时调度生成;hive表结构只有3列:用户Id、标签code、标签值
  3. 标签存储:hive表转换下图格式,然后通过datax到ElasticSearch

userlabels格式:

用户画像之标签查询(附源码)_第2张图片

3.表结构

ElasticSearch mapping:



1.  {
    
2.    "mappings": {
    
3.      "_doc": {
    
4.        "properties": {
    
5.          "userid": {
    
6.            "type": "keyword"
    
7.          },
    
8.          "userlabels": {
    
9.            "type": "nested"
    
10.          },
    
11.          "data_date": {
    
12.            "type": "keyword"
    
13.          }
    
14.        },
    
15.        "dynamic_templates": [
    
16.          {
    
17.            "string_template": {
    
18.              "path_match": "userlabels.*",
    
19.              "mapping": {
    
20.                "type": "keyword"
    
21.              }
    
22.            }
    
23.          }
    
24.        ]
    
25.      }
    
26.    }
    
27.  }
    

标签元数据表结构:



1.  CREATE TABLE `userprofile_tag_metadata` (
    
2.    `id` varchar(50) NOT NULL COMMENT 'id',
    
3.    `code` varchar(50) DEFAULT NULL COMMENT '标签code',
    
4.    `name` varchar(50) DEFAULT NULL COMMENT '标签名',
    
5.    `is_mutex` tinyint(1) DEFAULT NULL COMMENT '是否标签互斥:0:否;1:是',
    
6.    `data_format` int(10) DEFAULT NULL COMMENT '数据格式:1-枚举(tagValue默认为1);2-数值;3-文本;4-时间',
    
7.    `description` varchar(500) DEFAULT NULL COMMENT '标签说明',
    
8.    `category_id` varchar(50) DEFAULT NULL COMMENT '当前分类id',
    
9.    `all_category_id` varchar(1000) DEFAULT NULL COMMENT '全路径分类id',
    
10.    `top_category_id` varchar(50) DEFAULT NULL COMMENT '顶级分类id',
    
11.    `creator_id` varchar(200) DEFAULT NULL COMMENT '创建人',
    
12.    `gmt_create` datetime DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
    
13.    `gmt_modified` datetime DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '最后修改时间',
    
14.    `status` tinyint(1) DEFAULT '1' COMMENT '1启用,0禁用',
    
15.    `tag_production_rule` varchar(500) DEFAULT NULL COMMENT '标签生成规则',
    
16.    `tag_update_rule` varchar(500) DEFAULT NULL COMMENT '标签更新规则',
    
17.    `tag_type` int(10) DEFAULT NULL COMMENT '标签类型:1-统计;2-规则',
    
18.    `tag_value` varchar(200) DEFAULT NULL COMMENT '标签值',
    
19.    PRIMARY KEY (`id`) USING BTREE
    
20.  ) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC COMMENT='用户画像-标签元数据表';
    

4.标签筛选人群

1.请求格式



1.  [
    
2.    {
    
3.      "tagId": "003",
    
4.      "operator": "=",
    
5.      "tagValue": "1"
    
6.    },
    
7.    {
    
8.      "tagId": "002",
    
9.      "operator": ">",
    
10.      "tagValue": "50"
    
11.    },
    
12.    {
    
13.      "tagId": "002",
    
14.      "operator": "<=",
    
15.      "tagValue": 300
    
16.    }
    
17.  ]
    

2.人群筛选

通过elastiSearch的scroll筛选即可

源码地址:https://github.com/ostarsier/tagsearch

你可能感兴趣的:(java)