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

营销型网站建站推广建设快三网站

营销型网站建站推广,建设快三网站,wordpress 文章前空格,wordpress不能视频一、背景 es索引有一个文档CourseIndex#xff0c;下面是示意: creatorIdgradesubjectnameno1002270英语听力课程一N00232DS91004380数学口算课程N00209DK71003480物理竞赛课程N00642XS21002280英语听力课程二N00432WS31002290英语听力课程三N002312DP5 在搜索的时候#…一、背景 es索引有一个文档CourseIndex下面是示意: creatorIdgradesubjectnameno1002270英语听力课程一N00232DS91004380数学口算课程N00209DK71003480物理竞赛课程N00642XS21002280英语听力课程二N00432WS31002290英语听力课程三N002312DP5 在搜索的时候搜索条件包括creatorId列表grade列表subject列表等且它们不是固定的字典而是从文档CourseIndex的已有数据中获取。 假使上面的数据搜索条件分别是 creatorId列表 100210031004 grade列表 234 subject列表 708090 总结一下需求对es文档的数据进行桶bucket排序以达到去重效果。 下面将介绍如何使用spring-data-elasticsearch 3.2.4实现对指定字段的聚合搜索。 pom.xml引入jar包 dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-elasticsearch/artifactId/dependencydependencygroupIdorg.springframework.data/groupIdartifactIdspring-data-elasticsearch/artifactIdversion3.2.4.RELEASE/version/dependency二、CourseIndexAggrService.java import lombok.RequiredArgsConstructor; import org.elasticsearch.index.query.BoolQueryBuilder; import org.elasticsearch.index.query.QueryBuilders; import org.elasticsearch.search.aggregations.Aggregation; import org.elasticsearch.search.aggregations.AggregationBuilders; import org.elasticsearch.search.aggregations.bucket.terms.ParsedLongTerms; import org.elasticsearch.search.aggregations.bucket.terms.Terms; import org.elasticsearch.search.aggregations.bucket.terms.TermsAggregationBuilder; import org.springframework.data.elasticsearch.core.ElasticsearchRestTemplate; import org.springframework.data.elasticsearch.core.aggregation.AggregatedPage; import org.springframework.data.elasticsearch.core.query.NativeSearchQueryBuilder; import org.springframework.stereotype.Component;import java.util.ArrayList; import java.util.List;/*** author xxx*/ Component RequiredArgsConstructor public class CourseIndexAggrService {private final ElasticsearchRestTemplate elasticsearchRestTemplate;private final CommonConfig commonConfig;private static final String UNIQUE_FIELD unique_field;// 需要进行桶排序的字段public static final String CREATOR_ID creatorId;public static final String GRADE grade;public static final String SUBJECT subject;public ListString findUniqueField(String uniqueField) {NativeSearchQueryBuilder queryBuilder new NativeSearchQueryBuilder();BoolQueryBuilder boolQueryBuilder QueryBuilders.boolQuery();//TODO 这里boolQueryBuilder是一个空的查询条件// 过滤掉已逻辑删除的记录 // boolQueryBuilder.filter(QueryBuilders.termQuery(deleted, 0));queryBuilder.withQuery(boolQueryBuilder);TermsAggregationBuilder termsAgg AggregationBuilders.terms(UNIQUE_FIELD).field(uniqueField);queryBuilder.addAggregation(termsAgg);// idx_courseIndex是索引名queryBuilder.withIndices(idx_courseIndex);// CourseIndex是es文档类见下文AggregatedPageCourseIndex resultPage elasticsearchRestTemplate.queryForPage(queryBuilder.build(), CourseIndex.class);Aggregation aggregation resultPage.getAggregation(UNIQUE_FIELD);ParsedLongTerms terms (ParsedLongTerms) aggregation;// 获取桶final List? extends Terms.Bucket buckets terms.getBuckets();// 提取唯一值ListString uniqueUserIds new ArrayList();for (Terms.Bucket bucket : buckets) {uniqueUserIds.add(bucket.getKeyAsString());}return uniqueUserIds;} }三、CourseIndex.java 这里略去了无关本文的字段。 import lombok.Data; import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.FieldType;import javax.persistence.Id; import java.io.Serializable; import java.util.Set;/*** 课程索引.* p* 索引检索条件并非所有的字段* /p** author xxx*/ Data Document(indexName #{commonConfig.courseIdx}, type _doc, shards 1, refreshInterval -1) public class CourseIndex implements Serializable {Idprivate String id;/*** 课程或讲次编号*/Field(type FieldType.Keyword)private String no;/*** 创建者ID*/Field(type FieldType.Long)private long creatorId;/*** 课程或讲次名称*/Field(type FieldType.Text)private String name;/*** 科目*/Field(type FieldType.Integer)private int subject;/*** 年级*/Field(type FieldType.Integer)private int grade; }四、使用 // 查询创建者creatorId列表 final ListLong userIds courseIndexAggrService.findUniqueField(CREATOR_ID).stream().map(v - Long.parseLong(v)).collect(Collectors.toList());// 查询年级grade列表 final ListInteger grades courseIndexAggrService.findUniqueField(GRADE).stream().map(v - Integer.parseInt(v)).collect(Collectors.toList());// 查询科目subject列表 final ListInteger subjects courseIndexAggrService.findUniqueField(SUBJECT).stream().map(v - Integer.parseInt(v)).collect(Collectors.toList());
http://www.dnsts.com.cn/news/180783.html

相关文章:

  • 给朋友网站做宣传怎么写网站建设价格就要用兴田德润
  • 深圳建设网站top028青岛seo关键词优化排名
  • 网站广告轮播代码WordPress页面生成时间
  • 湖北专业的网瘾戒除学校有哪些淄博网站优化首选公司
  • 农业电商网站建设在崇左app官方网下载
  • 如何做属于自己的领券网站wordpress 加跳板
  • 娄底建网站网站开发的工作流程
  • 小说网站怎么做不违法苏州著名网站建设
  • 小企业网站建设的大品牌vs做的网站项目可以改名字吗
  • 外包建设网站小程序怎么制作自己的小程序
  • 金华婺城区建设局网站wordpress2018
  • 免费个人网站自助建设北京到牡丹江
  • wordpress能商用吗淘宝seo是什么意思
  • 企业怎么做好网站优化ih5做自适应网站
  • 江北网站制作wordpress调查问卷
  • 事业单位网站建设方案建地方的网站前景
  • 做网站的成本有多少搭建购物商城
  • 淘宝网站制作多少钱软件毕设代做网站
  • 福田网站网页设计网站开发培训中心
  • 重庆手机微信网站建设局网站建设方案
  • 清丰网站建设价格seo排名赚能赚钱吗
  • 建立网站的内容规划工程建设数字化管理平台
  • 建设网站审批audio player wordpress
  • 网站如何做网站解析网站虚拟主机空间
  • 上海网站营销推怎样用vs2017做网站
  • 做网站后台用什么写完成网站的建设工作
  • 针织厂家东莞网站建设中国建设银行官网站大同
  • 多终端网站开发枣庄企业网站建设
  • 网站前台功能介绍asp.net网站转php
  • 公司内部自己做抽奖网站游戏网页设计作品