-
dao
package com.czxy.reporty; import com.czxy.pojo.TdvdPojo; import org.springframework.data.elasticsearch.repository.ElasticsearchRepository; public interface DvdRepostory extends ElasticsearchRepository<TdvdPojo, Integer> { }
-
service
package com.czxy.service; import com.czxy.pojo.TdvdPojo; import com.czxy.reporty.DvdRepostory; import org.apache.commons.lang3.StringUtils; import org.elasticsearch.index.query.*; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.data.domain.PageRequest; import org.springframework.data.elasticsearch.core.query.NativeSearchQuery; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; @Service @Transactional public class Dservice { @Autowired private DvdRepostory dvdRepostory; /** * es 根据dvd名字进行查询 * @param serach * @return */ public Page<TdvdPojo> pageQuery(String serach ,Integer page ,Integer size) { BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery(); if(StringUtils.isNotBlank(serach)){ WildcardQueryBuilder q1 = QueryBuilders.wildcardQuery("dname","*"+serach+"*"); QueryBuilder q2 = new QueryStringQueryBuilder(serach).field("dname").defaultOperator(Operator.AND); BoolQueryBuilder boolQueryBuilder1 = new BoolQueryBuilder(); boolQueryBuilder1.should(q1).should(q2); boolQueryBuilder.must(boolQueryBuilder1); } NativeSearchQuery searchQuery =new NativeSearchQuery(boolQueryBuilder); searchQuery.setPageable(PageRequest.of(page - 1 ,size )); return this.dvdRepostory.search(searchQuery); } }
-
controller
package com.czxy.controller; import com.czxy.pojo.TdvdPojo; import com.czxy.service.Dservice; import com.czxy.vo.Result; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Page; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController @RequestMapping("/es") public class DvdController { @Autowired private Dservice dservice; @GetMapping("/search") public ResponseEntity<Result<TdvdPojo>> search(String search,Integer page, Integer size){ Page<TdvdPojo> pa= this.dservice.pageQuery(search,page, size); Result<TdvdPojo> result = new Result<>(pa.getTotalElements(),pa.getContent()); System.out.println(result); return new ResponseEntity<>(result,HttpStatus.OK); } }
-
pojo
package com.czxy.pojo; import org.springframework.data.annotation.Id; import org.springframework.data.elasticsearch.annotations.Document; import org.springframework.data.elasticsearch.annotations.Field; import org.springframework.data.elasticsearch.annotations.FieldType; @Document(indexName="dvdall",type="dvd") public class TdvdPojo { /** * id */ @Id private Integer id; /** * dvd名字 */ @Field(type = FieldType.Text) private String dname; /** * 总的库存量 */ @Field(type = FieldType.Long) private Integer allnumber; /** * 现在的库存量 */ @Field(type = FieldType.Long) private Integer nownumber; /** * 借阅的价格 */ @Field(type = FieldType.Float) private Double brorrowprice; /** * 原来的价格 */ @Field(type = FieldType.Float) private Double agoprice; @Field(type = FieldType.Auto) private String src; //省略setter和getter }
-
vo类
package com.czxy.vo; import java.util.List; public class Result<T> { //结果总数 private long total; //结果行数 private List<T> rows; private Integer page; private Integer size; //省略setter和getter
elasticsearch进阶使用demo
猜你喜欢
转载自blog.csdn.net/qq_42917455/article/details/84197575
今日推荐
周排行