本文已参与[新人创作礼]活动,一起开启掘金创作之路
最近在做一个数据清洗的项目,需要将xml数据清洗统计,在前期技术调研时选择了Elastic Search 作为数据存储数据库,ELasticSearch强大的数据分析能力可以满足大多数大数据存储和统计的需要。
mapping结构
{
"properties": {
"eventID": {
"type": "keyword"
},
"evtBasic": {
"type": "nested",
"properties": {
"JZDWBM": {
"type": "keyword"
},
"JZDWMC": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"TYSHXYDMJZDW": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"itemDetail": {
"properties": {
"GJYPBSM": {
"type": "keyword"
},
"JKYMDLQYMC": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"SCQYMC": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"SCRQ": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || yyyy/MM/dd HH:mm:ss|| yyyy/MM/dd ||epoch_millis ||yyyyMMdd"
},
"SYRQ": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || yyyy/MM/dd HH:mm:ss|| yyyy/MM/dd ||epoch_millis ||yyyyMMdd"
},
"SYSL": {
"type": "long"
},
"TYSHXYDMJKYMDLQY": {
"type": "keyword"
},
"TYSHXYDMSCQY": {
"type": "keyword"
},
"YMSCPH": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"YMYXQJZRQ": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || yyyy/MM/dd HH:mm:ss|| yyyy/MM/dd ||epoch_millis ||yyyyMMdd"
},
"YPPZWH": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"YPTYMC": {
"type": "text",
"fields": {
"keyword": {
"type": "keyword",
"ignore_above": 256
}
}
},
"instanceList": {
"properties": {
"instanceDetail": {
"properties": {
"SYSJ": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || yyyy/MM/dd HH:mm:ss|| yyyy/MM/dd ||epoch_millis ||yyyyMMdd"
},
"YFJZDABH": {
"type": "keyword"
},
"YMZT": {
"type": "keyword"
},
"YPZSM": {
"type": "keyword"
}
}
}
}
}
}
}
}
},
"recTime": {
"type": "date",
"format": "yyyy-MM-dd HH:mm:ss || yyyy-MM-dd || yyyy/MM/dd HH:mm:ss|| yyyy/MM/dd ||epoch_millis"
}
}
}
nested类型数据简单查询
{
"query": {
"bool": {
"must": [
{
"nested": { #如果是nested数据类型此处必须声明
"path": "evtBasic", #此处为nested根节点
"query": {
"bool": {
"must": [
{
"match_phrase": {
"evtBasic.JZDWMC": "北京"
}
}
]
}
}
}
}
]
}
}
}
nested类型数据aggs统计
{
"size": 0, #此处设置为0可以使结果中不显示_source
"aggs": {
"wordgroup": {
"nested": {
"path": "evtBasic"
},
"aggs": {
"word": {
"terms": {
"field": "evtBasic.KCJGMC.keyword", #由于字段为text不能直接用于聚合,需要使用keyword声明
"size": 100000, #这需要设置需要统计的文档数,数据量大的话就会出现结果中数据统计不全
"order": {
"wordnum": "desc"
}
},
"aggs": {
"wordnum": {
"sum": {
"field": "evtBasic.itemDetail.KCSL"
}
}
}
}
}
}
}
}