Compare commits

...

12 Commits

Author SHA1 Message Date
dependabot[bot]
ee9a6ae036 Bump protobuf-java from 3.5.1 to 3.16.1
Bumps [protobuf-java](https://github.com/protocolbuffers/protobuf) from 3.5.1 to 3.16.1.
- [Release notes](https://github.com/protocolbuffers/protobuf/releases)
- [Changelog](https://github.com/protocolbuffers/protobuf/blob/master/generate_changelog.py)
- [Commits](https://github.com/protocolbuffers/protobuf/compare/v3.5.1...v3.16.1)

---
updated-dependencies:
- dependency-name: com.google.protobuf:protobuf-java
  dependency-type: direct:production
...

Signed-off-by: dependabot[bot] <support@github.com>
2022-01-07 22:36:51 +00:00
xuwujing
083b8910b8 Merge pull request #10 from xuwujing/dependabot/maven/junit-junit-4.13.1
Bump junit from 4.12 to 4.13.1
2021-03-25 16:14:45 +08:00
xuwujing
5ecf5d1f94 Merge pull request #6 from xuwujing/dependabot/maven/org.apache.storm-storm-kafka-1.2.3
Bump storm-kafka from 1.2.2 to 1.2.3
2021-03-25 16:14:22 +08:00
xuwujing
797694e3d5 Merge pull request #11 from xuwujing/dependabot/maven/org.apache.poi-poi-3.17
Bump poi from 3.9 to 3.17
2021-03-25 16:14:03 +08:00
xuwujing
486a1fdab6 Merge pull request #12 from xuwujing/dev
Dev
2021-03-25 16:13:23 +08:00
xuwujing
29b1a0a783 insignificance update 2021-03-07 17:42:34 +08:00
xuwujing
a3a5104f01 1.增加ElasticSearch聚合使用示例 2021-03-06 14:32:33 +08:00
xuwujing
f697826997 1.增加ElasticSearch聚合使用示例 2021-03-06 14:22:51 +08:00
xuwujing
9800dabe89 更新说明 2021-03-06 14:20:40 +08:00
dependabot[bot]
1fc0ef47a3 Bump poi from 3.9 to 3.17
Bumps poi from 3.9 to 3.17.

Signed-off-by: dependabot[bot] <support@github.com>
2021-01-14 19:55:45 +00:00
dependabot[bot]
09a38484f6 Bump junit from 4.12 to 4.13.1
Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1.
- [Release notes](https://github.com/junit-team/junit4/releases)
- [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md)
- [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-13 08:56:20 +00:00
dependabot[bot]
035656604d Bump storm-kafka from 1.2.2 to 1.2.3
Bumps storm-kafka from 1.2.2 to 1.2.3.

Signed-off-by: dependabot[bot] <support@github.com>
2020-02-20 10:06:42 +00:00
7 changed files with 232 additions and 76 deletions

87
.gitignore vendored
View File

@@ -1,43 +1,44 @@
/target/
/classes/
/log/
/logs/
.classpath
.project
.settings
.myeclipse
##filter databfile<6C><65>sln file##
*.mdb
*.ldb
*.sln
##class file##
*.com
*.class
*.dll
*.exe
*.o
*.so
# compression file
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
*.via
*.iml
*.tmp
*.err
*.log
# OS generated files #
/.idea
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
Thumbs.db
/target/
/classes/
/log/
/logs/
.classpath
.project
.settings
.myeclipse
##filter databfile<6C><65>sln file##
*.mdb
*.ldb
*.sln
##class file##
*.com
*.class
*.dll
*.exe
*.o
*.so
# compression file
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
*.via
*.iml
*.tmp
*.err
*.log
# OS generated files #
/.idea
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
Icon?
ehthumbs.db
Thumbs.db
/.github/

View File

@@ -81,11 +81,15 @@
**ElasticSearch相关:**
- [ElasticSearch实战系列一: ElasticSearch集群+Kinaba安装教程](https://www.cnblogs.com/xuwujing/p/11385255.html)
- [ElasticSearch实战系列一: ElasticSearch集群+Kibana安装教程](https://www.cnblogs.com/xuwujing/p/11385255.html)
- [ElasticSearch实战系列二: ElasticSearch的DSL语句使用教程---图文详解](https://www.cnblogs.com/xuwujing/p/11567053.html)
- [ElasticSearch实战系列三: ElasticSearch的JAVA API使用教程](https://www.cnblogs.com/xuwujing/p/11645630.html)
- [ElasticSearch实战系列四: ElasticSearch理论知识介绍](https://www.cnblogs.com/xuwujing/p/12093933.html)
- [ElasticSearch实战系列五: ElasticSearch的聚合查询基础使用教程之度量(Metric)聚合](https://www.cnblogs.com/xuwujing/p/12385903.html)
- [ElasticSearch实战系列六: Logstash快速入门](https://www.cnblogs.com/xuwujing/p/13412108.html)
- [ElasticSearch实战系列七: Logstash实战使用-图文讲解](https://www.cnblogs.com/xuwujing/p/13520666.html)
- [ElasticSearch实战系列八: Filebeat快速入门和使用---图文详解](https://www.cnblogs.com/xuwujing/p/13532125.html)
- [ElasticSearch实战系列九: ELK日志系统介绍和安装](https://www.cnblogs.com/xuwujing/p/13870806.html)
**其他博客:**
@@ -98,6 +102,7 @@
- [个人收集的资源分享](https://www.cnblogs.com/xuwujing/p/10393111.html)
- [一个毕业三年的程序猿对于提升自我的一些建议](https://www.cnblogs.com/xuwujing/p/11735726.html)
- [认清自我不在迷茫2019个人年终总结](https://www.cnblogs.com/xuwujing/p/12174112.html)
- [纵然前路坎坷也要毅然前行2020年终总结](https://www.cnblogs.com/xuwujing/p/14233270.html)
## 其他

17
pom.xml
View File

@@ -27,7 +27,7 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<version>4.13.1</version>
</dependency>
@@ -117,7 +117,7 @@
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>3.9</version>
<version>3.17</version>
</dependency>
<dependency>
@@ -165,7 +165,7 @@
<dependency>
<groupId>com.google.protobuf</groupId>
<artifactId>protobuf-java</artifactId>
<version>3.5.1</version>
<version>3.16.1</version>
</dependency>
@@ -375,7 +375,7 @@
<dependency>
<groupId>org.apache.storm</groupId>
<artifactId>storm-kafka</artifactId>
<version>1.2.2</version>
<version>1.2.3</version>
<scope>provided</scope>
</dependency>
@@ -395,9 +395,14 @@
<groupId>io.searchbox</groupId>
<artifactId>jest</artifactId>
<version>6.3.1</version>
</dependency>
</dependency>
<!-- excel 工具类-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>2.2.7</version>
</dependency>

View File

@@ -22,19 +22,19 @@ public class ResponsibilityTest {
String name = "xuwujing";
String something = "去聚餐";
String something2 = "去旅游";
Learder learder1 =new Supervisor(name, something);
Learder learder2 =new BranchManager(name, something);
Learder learder3 =new GeneralManager(name, something);
learder1.setLearder(learder2);
learder2.setLearder(learder3);
learder1.handler(1);
Leader leader1 =new Supervisor(name, something);
Leader leader2 =new BranchManager(name, something);
Leader leader3 =new GeneralManager(name, something);
leader1.setLeader(leader2);
leader2.setLeader(leader3);
leader1.handler(1);
Learder learder4 =new Supervisor(name, something2);
Learder learder5 =new BranchManager(name, something2);
Learder learder6 =new GeneralManager(name, something2);
learder4.setLearder(learder5);
learder5.setLearder(learder6);
learder4.handler(0);
Leader leader4 =new Supervisor(name, something2);
Leader leader5 =new BranchManager(name, something2);
Leader leader6 =new GeneralManager(name, something2);
leader4.setLeader(leader5);
leader5.setLeader(leader6);
leader4.handler(0);
@@ -76,24 +76,24 @@ class ConcreteHandler extends Handler {
}
abstract class Learder{
abstract class Leader {
protected Learder learder;
protected Leader leader;
protected void setLearder(Learder learder){
this.learder=learder;
protected void setLeader(Leader leader){
this.leader = leader;
}
protected Learder getLearder(){
return learder;
protected Leader getLeader(){
return leader;
}
abstract void handler(int level);
}
//主管
class Supervisor extends Learder{
class Supervisor extends Leader {
private String name;
private String something;
public Supervisor(String name,String something) {
@@ -108,13 +108,13 @@ class Supervisor extends Learder{
System.out.println("主管处理了 "+name+"所述的<"+something+">事情!");
}else{
System.out.println("主管未能处理 "+name+"所述的<"+something+">事情!转交给上级!");
getLearder().handler(level);
getLeader().handler(level);
}
}
}
//部门经理
class BranchManager extends Learder{
class BranchManager extends Leader {
private String name;
private String something;
public BranchManager(String name,String something) {
@@ -129,13 +129,13 @@ class BranchManager extends Learder{
System.out.println("部门经理处理了 "+name+"所述的<"+something+">事情!");
}else{
System.out.println("部门经理未能处理 "+name+"所述的<"+something+">事情!转交给上级!");
getLearder().handler(level);
getLeader().handler(level);
}
}
}
//总经理
class GeneralManager extends Learder{
class GeneralManager extends Leader {
private String name;
private String something;
public GeneralManager(String name,String something) {
@@ -150,7 +150,7 @@ class GeneralManager extends Learder{
System.out.println("总经理处理了 "+name+"所述的<"+something+">事情!");
}else{
System.out.println("总经理未能处理 "+name+"所述的<"+something+">事情!转交给上级!");
getLearder().handler(level);
getLeader().handler(level);
}
}
}

View File

@@ -8,13 +8,17 @@ import org.elasticsearch.action.admin.indices.get.GetIndexRequest;
import org.elasticsearch.action.bulk.BulkRequest;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.action.support.IndicesOptions;
import org.elasticsearch.action.update.UpdateRequest;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestClient;
import org.elasticsearch.client.RestClientBuilder;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.common.xcontent.XContentType;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.index.query.QueryBuilders;
import org.elasticsearch.rest.RestStatus;
import org.elasticsearch.script.Script;
import org.elasticsearch.search.aggregations.Aggregation;
import org.elasticsearch.search.aggregations.AggregationBuilder;
import org.elasticsearch.search.aggregations.AggregationBuilders;
@@ -23,10 +27,13 @@ import org.elasticsearch.search.aggregations.bucket.histogram.DateHistogramInter
import org.elasticsearch.search.aggregations.bucket.terms.Terms;
import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder;
import org.elasticsearch.search.aggregations.metrics.avg.Avg;
import org.elasticsearch.search.aggregations.metrics.cardinality.CardinalityAggregationBuilder;
import org.elasticsearch.search.aggregations.metrics.max.Max;
import org.elasticsearch.search.aggregations.metrics.min.Min;
import org.elasticsearch.search.aggregations.metrics.sum.Sum;
import org.elasticsearch.search.aggregations.metrics.tophits.TopHits;
import org.elasticsearch.search.aggregations.pipeline.PipelineAggregatorBuilders;
import org.elasticsearch.search.aggregations.pipeline.bucketselector.BucketSelectorPipelineAggregationBuilder;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -270,7 +277,7 @@ public class EsAggregationSearchTest {
private static void maxSearch() throws IOException{
String buk="t_grade";
AggregationBuilder aggregation = AggregationBuilders.max(buk).field("grade");
logger.info("求班级的最分数:");
logger.info("求班级的最分数:");
agg(aggregation,buk);
}
@@ -393,6 +400,28 @@ public class EsAggregationSearchTest {
});
}
private static void agg(List<Map<String, Object>> list, Aggregations aggregations) {
aggregations.forEach(aggregation -> {
String name = aggregation.getName();
Terms genders = aggregations.get(name);
for (Terms.Bucket entry : genders.getBuckets()) {
String key = entry.getKey().toString();
long t = entry.getDocCount();
Map<String,Object> map =new HashMap<>();
map.put(name,key);
map.put(name+"_"+"count",t);
//判断里面是否还有嵌套的数据
List<Aggregation> list2 = entry.getAggregations().asList();
if (list2.isEmpty()) {
list.add(map);
}else{
agg(list, entry.getAggregations());
}
}
});
System.out.println(list);
}
private static SearchResponse search(AggregationBuilder aggregation) throws IOException {
@@ -473,6 +502,99 @@ public class EsAggregationSearchTest {
}
}
/**
* @Author pancm
* @Description having
* @Date 2020/8/21
* @Param []
* @return void
**/
private static void havingSearch() throws IOException{
String index="";
SearchRequest searchRequest = new SearchRequest(index);
searchRequest.indices(index);
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
BoolQueryBuilder boolQueryBuilder = new BoolQueryBuilder();
searchRequest.indicesOptions(IndicesOptions.lenientExpandOpen());
String alias_name = "nas_ip_address_group";
String group_name = "nas_ip_address";
String query_name = "acct_start_time";
String query_type = "gte,lte";
String query_name_value="2020-08-05 13:25:55,2020-08-20 13:26:55";
String[] query_types= query_type.split(",");
String[] query_name_values= query_name_value.split(",");
for (int i = 0; i < query_types.length; i++) {
if("gte".equals(query_types[i])){
boolQueryBuilder.must(QueryBuilders.rangeQuery(query_name).gte(query_name_values[i]));
}
if("lte".equals(query_types[i])){
boolQueryBuilder.must(QueryBuilders.rangeQuery(query_name).lte(query_name_values[i]));
}
}
AggregationBuilder aggregationBuilder = AggregationBuilders.terms(alias_name).field(group_name).size(Integer.MAX_VALUE);
//声明BucketPath用于后面的bucket筛选
Map<String, String> bucketsPathsMap = new HashMap<>(8);
bucketsPathsMap.put("groupCount", "_count");
//设置脚本
Script script = new Script("params.groupCount >= 1000");
//构建bucket选择器
BucketSelectorPipelineAggregationBuilder bs =
PipelineAggregatorBuilders.bucketSelector("having", bucketsPathsMap, script);
aggregationBuilder.subAggregation(bs);
sourceBuilder.aggregation(aggregationBuilder);
//不需要解释
sourceBuilder.explain(false);
//不需要原始数据
sourceBuilder.fetchSource(false);
//不需要版本号
sourceBuilder.version(false);
sourceBuilder.query(boolQueryBuilder);
searchRequest.source(sourceBuilder);
System.out.println(sourceBuilder);
// 同步查询
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
// 查询条数
long count = searchResponse.getHits().getHits().length;
Aggregations aggregations = searchResponse.getAggregations();
// agg(aggregations);
Map<String,Object> map =new HashMap<>();
List<Map<String,Object>> list =new ArrayList<>();
agg(list,aggregations);
// System.out.println(map);
System.out.println(list);
}
/**
* @Author pancm
* @Description 去重
* @Date 2020/8/26
* @Param []
* @return void
**/
private static void distinctSearch() throws IOException{
String buk="group";
String distinctName="name";
AggregationBuilder aggregation = AggregationBuilders.terms("age").field("age");
CardinalityAggregationBuilder cardinalityBuilder = AggregationBuilders.cardinality(distinctName).field(distinctName);
//根据创建时间按天分组
// AggregationBuilder aggregation3 = AggregationBuilders.dateHistogram("createtm")
// .field("createtm")
// .format("yyyy-MM-dd")
// .dateHistogramInterval(DateHistogramInterval.DAY);
//
// aggregation2.subAggregation(aggregation3);
aggregation.subAggregation(cardinalityBuilder);
agg(aggregation,buk);
}
private static void topSearch() throws IOException{

View File

@@ -0,0 +1,15 @@
package com.pancm.excel;
/**
* @author pancm
* @Title: pancm_project
* @Description:
* 参考: https://www.yuque.com/easyexcel/doc
* @Version:1.0.0
* @Since:jdk1.8
* @date 2021/1/26
*/
public class EasyExcelTest {
}

View File

@@ -0,0 +1,8 @@
/**
* @Title: package-info
* @Description: excel相关包
* @Version:1.0.0
* @author pancm
* @date 2019年2月28日
*/
package com.pancm.excel;