当前位置: 首页 > news >正文

个性化的个人网站简易韩文网站建设

个性化的个人网站简易,韩文网站建设,消除wordpress,购物网站类型easy-es、elasticsearch、分词器 与springboot 结合的代码我这里就不放了#xff0c;我这里直接是使用代码。 基础准备#xff1a; 创建实体类#xff1a; Data // 索引名 IndexName(test_jc) public class TestJcES {// id注解IndexId(type IdType.CUSTOMI…easy-es、elasticsearch、分词器 与springboot 结合的代码我这里就不放了我这里直接是使用代码。 基础准备 创建实体类 Data // 索引名 IndexName(test_jc) public class TestJcES {// id注解IndexId(type IdType.CUSTOMIZE)private Long id;// 如果需要分词查询必须 FieldType.TEXT analyzer ik_max_word 官网有说明IndexField(fieldType FieldType.TEXT, analyzer ik_max_word)private String name;// 非分词查询类型 最好用 KEYWORDIndexField(fieldType FieldType.KEYWORD)private String sex;/*** [描述] 如果某字段数组类型并且该类型后期需要聚合操作必须 fieldData true* FieldType.TEXT会将数组中的元素 “拆分单字符” 进行聚合* FieldType.KEYWORD 会对数组中的元素进行聚合*/IndexField(fieldType FieldType.TEXT,fieldData true)private ListString industryTags;IndexField(fieldType FieldType.KEYWORD,fieldData true)private ListString productTags;//时间类型IndexField(fieldType FieldType.DATE, dateFormat yyyy-MM-dd HH:mm:ss)private String updateTime;IndexField(fieldType FieldType.DATE, dateFormat yyyy-MM-dd HH:mm:ss)private String createTime;public TestJcES(Long id,String name, ListString industryTags, ListString productTags) {this.id id;this.name name;this.industryTags industryTags;this.productTags productTags;} }PS在easy-es的注解 IndexFiled 中源码会有说明 对应的mapper // BaseEsMapper 来自 easy-es框架 public interface TestJcESMapper extends cn.easyes.core.core.BaseEsMapperTestJcES { } 增删改带批量 testJcESMapper.deleteIndex(test_jd);testJcESMapper.createIndex(test_jd);TestJcES es new TestJcES(1L,小红,29,Arrays.asList(分类1,分类2,分类3),Arrays.asList(标签1,标签2));TestJcES es2 new TestJcES(2L,小白,29,Arrays.asList(分类1,分类3),Arrays.asList(标签1,标签3));TestJcES es3 new TestJcES(3L,小黑,30,Arrays.asList(分类4),Arrays.asList(标签1));TestJcES es4 new TestJcES(4L,小明,18,Arrays.asList(分类1),Arrays.asList(标签1,标签2,变迁3));testJcESMapper.insertBatch(Arrays.asList(es,es2,es3,es4));//批量更新//testJcESMapper.updateBatchByIds(Arrays.asList(es,es2,es3,es4));//批量删除//testJcESMapper.deleteBatchIds(Arrays.asList(1L,2L, 3L, 4L));LambdaEsQueryWrapperTestJcES query new LambdaEsQueryWrapper();//相当于 select * from test_jc where name like %红% and sex 29 and industryTags in (标签1,标签2)query.and(item-item.match(TestJcES::getName, 红));query.and(item-item.match(TestJcES::getSex, 29));query.in(industryTags,Arrays.asList(标签1,标签2));// 默认按查询度倒叙lambdaEsQueryWrapper.sortByScore(SortOrder.DESC);//注意从1开始起步 不是从0开始EsPageInfoTestJcES pageQuery testJcESMapper.pageQuery(query, 1, 10);//查询数据System.out.println(pageQuery.getList());//总条数System.out.println(pageQuery.getTotal());//总页数System.out.println(pageQuery.getPages()); 聚合操作 1.普通keyword类型字段聚合: LambdaEsQueryWrapperTestJcES query new LambdaEsQueryWrapper();//TODO 这里也可以通过query带条件进行聚合//比如 query.match(TestJcES::getName, 红);// 这里类似 select * from test_jc group by sex String filedName sex;query.groupBy(filedName);// 是否统计hits的数据总数 设置为0 则不统计 数据量大的时候聚合速度会更快一些//query.size(0);SearchResponse searchResponse testJcESMapper.search(query);//7. 获取命中对象 SearchHitsSearchHits hits searchResponse.getHits();//7.1 获取总记录数 如果 query.size(0) 则这里值就为0Long total hits.getTotalHits().value;System.out.println(被聚合的数据总条数total);// aggregations 对象Aggregations aggregations searchResponse.getAggregations();//将aggregations 转化为mapMapString, Aggregation aggregationMap aggregations.asMap();//通过key获取 filedNameTerms 对象 使用Aggregation的子类接收 buckets属性在Terms接口中体现// Aggregation goods_brands1 aggregationMap.get(filedNameTerms);Terms resultTerms (Terms) aggregationMap.get(filedNameTerms);//获取buckets 数组集合List? extends Terms.Bucket buckets resultTerms.getBuckets();MapString,Objectmapnew HashMap();//遍历buckets key 属性名doc_count 统计聚合数for (Terms.Bucket bucket : buckets) {System.out.println(bucket.getKey());System.out.println(bucket.getDocCount());map.put(bucket.getKeyAsString(),bucket.getDocCount());}聚合效果 2.数组text类型类型聚合 LambdaEsQueryWrapperTestJcES query new LambdaEsQueryWrapper();//TODO 这里也可以通过query带条件进行聚合//比如 query.match(TestJcES::getName, 红);String filedName industryTags;query.groupBy(filedName);// 是否统计hits的数据总数 设置为0 则不统计 数据量大的时候聚合速度会更快一些//query.size(0);SearchResponse searchResponse testJcESMapper.search(query);//7. 获取命中对象 SearchHitsSearchHits hits searchResponse.getHits();//7.1 获取总记录数 如果 query.size(0) 则这里值就为0Long total hits.getTotalHits().value;System.out.println(被聚合的数据总条数total);// aggregations 对象Aggregations aggregations searchResponse.getAggregations();//将aggregations 转化为mapMapString, Aggregation aggregationMap aggregations.asMap();//通过key获取 filedNameTerms 对象 使用Aggregation的子类接收 buckets属性在Terms接口中体现// Aggregation goods_brands1 aggregationMap.get(filedNameTerms);Terms resultTerms (Terms) aggregationMap.get(filedNameTerms);//获取buckets 数组集合List? extends Terms.Bucket buckets resultTerms.getBuckets();MapString,Objectmapnew HashMap();//遍历buckets key 属性名doc_count 统计聚合数for (Terms.Bucket bucket : buckets) {System.out.println(bucket.getKey());System.out.println(bucket.getDocCount());map.put(bucket.getKeyAsString(),bucket.getDocCount());} 如果实体类的属性类型采用 text则会把该属性里面的所有值分词然后进行聚合 聚合效果 2.数组keyword类型类型聚合 LambdaEsQueryWrapperTestJcES query new LambdaEsQueryWrapper();//TODO 这里也可以通过query带条件进行聚合//比如 query.match(TestJcES::getName, 红);// 类似 select * from test_jc group by productTagsString filedName productTags;query.groupBy(filedName);// 是否统计hits的数据总数 设置为0 则不统计 数据量大的时候聚合速度会更快一些//query.size(0);SearchResponse searchResponse testJcESMapper.search(query);//7. 获取命中对象 SearchHitsSearchHits hits searchResponse.getHits();//7.1 获取总记录数 如果 query.size(0) 则这里值就为0Long total hits.getTotalHits().value;System.out.println(被聚合的数据总条数total);// aggregations 对象Aggregations aggregations searchResponse.getAggregations();//将aggregations 转化为mapMapString, Aggregation aggregationMap aggregations.asMap();//通过key获取 filedNameTerms 对象 使用Aggregation的子类接收 buckets属性在Terms接口中体现// Aggregation goods_brands1 aggregationMap.get(filedNameTerms);Terms resultTerms (Terms) aggregationMap.get(filedNameTerms);//获取buckets 数组集合List? extends Terms.Bucket buckets resultTerms.getBuckets();MapString,Objectmapnew HashMap();//遍历buckets key 属性名doc_count 统计聚合数for (Terms.Bucket bucket : buckets) {System.out.println(bucket.getKey());System.out.println(bucket.getDocCount());map.put(bucket.getKeyAsString(),bucket.getDocCount());}聚合效果 es聚合强大的地方在于会把属性为数组拆分元素进行聚合统计一般来说普通统计用到这里就完全足够了。 PS 另外附赠elasticsearch通用聚合方法 可 /*** [描述]*/private ListMapString,Object commonGroup3(TestJcES search , String fieldName) {// 创建一个布尔查询来组合多个条件BoolQueryBuilder boolQuery QueryBuilders.boolQuery();if (StringUtils.isNotBlank(search.getName())) {boolQuery.should(QueryBuilders.multiMatchQuery(search.getName(), name));}if(search.getProductTags() ! null){boolQuery.should(QueryBuilders.matchQuery(productTags,search.getProductTags()));}return commonGroupByBoolQuery(fieldName, boolQuery,test_jc);}/*** 根据布尔查询创建一个过滤聚合并返回基于指定字段的聚合结果* param fieldName 指定的字段名* param boolQuery 基于该布尔查询创建过滤聚合* param indexName 索引名称* return 基于指定字段的聚合结果列表每个结果包含字段名和计数*/private ListMapString, Object commonGroupByBoolQuery(String fieldName, BoolQueryBuilder boolQuery,String indexName) {// 创建一个过滤聚合基于布尔查询FilterAggregationBuilder filterAgg AggregationBuilders.filter(filtered_agg, boolQuery);// 在过滤后的文档上创建其他聚合TermsAggregationBuilder termsAgg AggregationBuilders.terms(agg_field).field(fieldName);// 将聚合添加到过滤聚合中filterAgg.subAggregation(termsAgg);SearchRequest searchRequest new SearchRequest(indexName);SearchSourceBuilder sourceBuilder new SearchSourceBuilder();// 添加聚合到搜索源构建器sourceBuilder.aggregation(filterAgg);searchRequest.source(sourceBuilder);try {SearchResponse searchResponse restHighLevelClient.search(searchRequest, RequestOptions.DEFAULT);// 获取聚合结果Filter filteredAggregation searchResponse.getAggregations().get(filtered_agg);Terms yourFieldAggregation filteredAggregation.getAggregations().get(agg_field);return yourFieldAggregation.getBuckets().stream().map(item - {MapString, Object map new HashMap(2);map.put(name, item.getKeyAsString());map.put(count, item.getDocCount());return map;}).collect(Collectors.toList());} catch (IOException e) {e.printStackTrace();}return List.of();}另附easy-es官网地址 https://www.easy-es.cn/pages/ce1922/#%E5%B8%B8%E8%A7%84%E8%81%9A%E5%90%88 官网很完整的demo https://www.easy-es.cn/pages/17ea0a/#%E4%BC%98%E5%8A%BF%E5%AF%B9%E6%AF%94 部分es教程博客 https://blog.csdn.net/weixin_46115287/article/details/120974337
http://www.pierceye.com/news/319596/

相关文章:

  • 网站产品内容在数据库wordpress都可以干什么
  • 宿州哪家做网站不做西安家电商城网站建设
  • 广安门外网站建设wordpress权限不能更新
  • 可以查企业备案的网站吗重庆建网站多少钱
  • 做网站如何分工中国十大企业
  • 网站开发和前端和数据媒体wordpress关闭主题
  • 怎样开网站卖东西龙华网站制作公司
  • 网站制作公司南宁怎样大力开发公司网站建设
  • 香橼做空机构网站广州地铁运营时间
  • 怎么用Visio studio做网站软件开发需要哪些人员
  • emlog做企业网站建设教育网站费用
  • 有做火币网这种网站的吗对红色网站建设的建议
  • 聚美优品网站建设导向北郊网站建设
  • 一键建站免费公司网页如何建立
  • 简诉网站建设的基本流程嵌入式培训心得体会
  • 旅游网站建设报价单编程猫官方网站
  • phpcms 专题网站模板网站效果图用什么做
  • 手机网站需要多少钱做淘宝网站运营工作流程
  • 惠州seo网站管理个人网站名
  • 大型网站的优化方法儿童编程哪家培训机构好
  • 怎么样能够为一个网站做推广金安合肥网站建设专业
  • 免费手机网站商城微信公众号对接网站做
  • 用vs2013做网站公司网站突然404
  • 东莞建站模板搭建广东商城网站建设
  • crm网站下载网站建设网址网站制作
  • 网站开发怎么入驻京东花店网站开发参考文献
  • 郑州专业网站推广优化公司技术支持 东莞网站建设
  • 苏州做网站的公司哪家最好网站企业
  • 厦门做网站seo网络营销就是什么
  • 哪个网站可以学做蛋糕网络软件系统