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

搭建网站有什么用五金表带厂东莞网站建设

搭建网站有什么用,五金表带厂东莞网站建设,如何在百度搜到自己的网站,做网站读什么专业一、前言 注:本文实现了Java对Elasticseach的分页检索/不分页检索的封装 ES就不用过多介绍了,直接上代码: 二、实现步骤: 创建Store类(与ES字段对应,用于接收ES数据) import com.alibaba.f…

一、前言

注:本文实现了Java对Elasticseach的分页检索/不分页检索的封装

ES就不用过多介绍了,直接上代码:

二、实现步骤:

  • 创建Store类(与ES字段对应,用于接收ES数据)
import com.alibaba.fastjson2.annotation.JSONField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.elasticsearch.annotations.Document;
import org.springframework.data.elasticsearch.annotations.Field;/*** indexName               索引名称 理解为数据库名 限定小写* type                    理解为数据库的表名称* shards                  默认分区数* replicas                每个分区默认的备份数* refreshInterval         刷新间隔* indexStoreType          索引文件存储类型**/
@Data
@Builder
@NoArgsConstructor
@AllArgsConstructor
@Document(indexName = yourIndex, shards = n, replicas = n, refreshInterval = n)
public class Store implements Serializable {/*** 属性,与ES字段对应* 注:@Field注解:* 若Java属性名与ES字段名不同,则根据@Field的name属性匹配ES字段* 若Java属性名与ES字段名完全相同,则不用加该注解或name属性*/@Field(name = "yourESfield")private String yourAttribute;
}
  • Elasticsearch全文检索接口:不分页检索
import com.alibaba.fastjson2.JSON;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.elasticsearch.action.search.SearchRequest;
import org.elasticsearch.action.search.SearchResponse;
import org.elasticsearch.client.RequestOptions;
import org.elasticsearch.client.RestHighLevelClient;
import org.elasticsearch.index.query.BoolQueryBuilder;
import org.elasticsearch.search.builder.SearchSourceBuilder;
import org.elasticsearch.search.sort.SortOrder;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;import java.util.Arrays;
import java.util.Collections;
import java.util.List;
import java.util.stream.Collectors;@Slf4j
@Component
public class Elasticsearch{@Autowiredprivate RestHighLevelClient restHighLevelClient;/*** 不分页检索** @param yourIndex 索引* @param builder   搜索条件* @param sortField 排序属性* @param sortOrder 排序方式* @param clazz     返回类* @param <T>       泛型* @return 分页表格*/@SuppressWarnings("checkstyle:ParameterNumber")public <T> List<T> searchListByCond(String yourIndex, BoolQueryBuilder builder, String sortField, SortOrder sortOrder, Class<T> clazz) {SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();sourceBuilder.query(builder);if (StringUtils.isNotBlank(sortField)) {sourceBuilder.sort(sortField, sortOrder);}SearchRequest request = new SearchRequest(yourIndex);request.source(sourceBuilder);SearchResponse response = null;try {response = restHighLevelClient.search(request, RequestOptions.DEFAULT);} catch (Exception e) {log.error("Search Elasticsearch Error!", e);}if (response == null) {return Collections.emptyList();}return Arrays.stream(response.getHits().getHits()).map(v -> JSON.parseObject(v.getSourceAsString(), clazz)).collect(Collectors.toList());}
}
  • Elasticsearch全文检索接口:分页检索
/*** 分页检索** @param yourIndex 索引* @param builder   搜索条件* @param page      分页参数(自己封装一个分页类,网上很多,easy)* @param sortField 排序属性* @param sortOrder 排序方式* @param clazz     返回类* @param <T>       泛型* @return 分页表格*/@SuppressWarnings("checkstyle:ParameterNumber")public <T> Page<T> searchPageByCond(String yourIndex, BoolQueryBuilder builder, Page<T> page, String sortField, SortOrder sortOrder, Class<T> clazz) {SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();sourceBuilder.query(builder);sourceBuilder.from(Math.max(page.getOffset(), 0));sourceBuilder.size(page.getLimit());if (StringUtils.isNotBlank(sortField)) {sourceBuilder.sort(sortField, sortOrder);}SearchRequest request = new SearchRequest(yourIndex);request.source(sourceBuilder);SearchResponse response = null;try {response = restHighLevelClient.search(request, RequestOptions.DEFAULT);} catch (Exception e) {log.error("Search Elasticsearch Error!", e);}if (response == null) {page.setRows(Collections.emptyList());page.setTotal(0);return page;}page.setRows(Arrays.stream(response.getHits().getHits()).map(v -> JSON.parseObject(v.getSourceAsString(), clazz)).collect(Collectors.toList()));page.setTotal((int) response.getHits().getTotalHits().value);return page;}

三、总结

  • 本文实现了Java对Elasticsearch搜索引擎全文检索的封装

  • 传入索引、BoolQueryBuilder查询条件(选传)、排序方式(选传)、Store数据接收类

  • 即可完成对Elasticsearch的全文分页检索、不分页检索

http://www.yayakq.cn/news/28007/

相关文章:

  • 图片展示型网站模板下载wordpress菜单保存不
  • 申请永久网站空间南京广告公司排行榜
  • 有价值 网站亳州网站开发
  • 绥德网站建设wordpress后台网页无法访问
  • 怎样给自己建立网站做外贸 建网站要注意什么
  • 网站推广自己可以做吗wordpress 抓取文章
  • 网站开发和运营维护服务器里面如何做网站
  • 竞争对手 网站流量网站备案不通过怎么解决
  • 企业怎么做自己的网站广东做网站哪家公司好
  • 呼伦贝尔建设工程检测网站营销成功案例分享及感悟
  • 网站建设 深度网做一个免费网站
  • 温州网站建代做动画毕业设计的网站
  • 网站排名网站优化软文营销的作用有哪些
  • 论企业网站建设的必要性图册制作
  • icp许可证个人网站做商品推广有那些网站
  • 学习做网站可以吗做旅行义工网站蚁
  • 网站建设简述需求分析的基本概念及内容西安网页制作
  • 网站如何做vip等级公司免费网站模板
  • 高埗仿做网站港北网站建设
  • 360提示的危险网站兴义市城乡建设局网站
  • 深圳网站建设黄浦网络-技术差内部劵淘网站怎么做
  • 网站中嵌入地图网站建设银行
  • 深圳建设网站公司哪儿济南兴田德润有活动吗php网站开发就业前景
  • 百度收录网站排名空间站免费版下载
  • 网站建设的功能有哪些网上商城介绍
  • 沈阳个人网站制作php投资理财企业网站模板
  • 网页设计网站简单静态模板外网代理服务器网站
  • 制造企业危机公关解决方案seo推广培训中心
  • 安徽省建设协会网站免费视频制作app
  • 网站建设中关村做网站需要资质