springboot集成elasticsearch实例

elasticsearch集成

 spring:
  elasticsearch:
    jest:
      uris: http://127.0.0.1:9200/
      read-timeout: 30s
      connection-timeout: 30s

配置type,index

index: XXX
type: XXX

操作

pom.xml

        <jest.version>5.3.2</jest.version>
		<elasticsearch.version>5.5.0</elasticsearch.version>
        <dependency>
			<groupId>io.searchbox</groupId>
			<artifactId>jest</artifactId>
			<version>${jest.version}</version>
		</dependency>
		<!-- https://mvnrepository.com/artifact/org.elasticsearch/elasticsearch -->
		<dependency>
			<groupId>org.elasticsearch</groupId>
			<artifactId>elasticsearch</artifactId>
			<version>${elasticsearch.version}</version>
		</dependency>

1.根据条件分页查询


@Value("${type}")
    private String type;
    @Value("${index}")
    private String index;

    @Autowired
    private JestClient jestClient;

  public PageInfo<Class> pageList(Class class,int pageNum,int pageSize) {
  SearchSourceBuilder searchBuilder = new SearchSourceBuilder();
   BoolQueryBuilder boolQueryBuilder = QueryBuilders.boolQuery();
    String keywords = class.getKeyWord();
        if(!StringUtils.isEmpty(keywords)){
            String[] keys = keywords.split("\\s+");//"\s"匹配任意空白字符
            StringBuffer values = new StringBuffer();
            for(String str: keys){
                values.append("\""+str+"\"|");//|or +and
            }
            String resultvalue = values.substring(0, values.length()-1);
            SimpleQueryStringBuilder simpleQuery = new SimpleQueryStringBuilder(resultvalue);
            simpleQuery.field("_all");
            simpleQuery.defaultOperator(Operator.OR);
            boolQueryBuilder.must(simpleQuery);
        }
        else {
         if (!StringUtils.isEmpty(class.getXx1)) { //如果为数字
         	//参数格式 1,3,4,2
                String[] xx1= class.getXx1().split(",");
                boolQueryBuilder.must(QueryBuilders.termsQuery("xx1", xx1));
            }
         if (!StringUtils.isEmpty(class.getXx2)) { //如果为字符串
                String[] xx2= class.getXx2().split(",");
                boolQueryBuilder.must(QueryBuilders.termsQuery("xx2.keyword", xx2));
            }
         if (!StringUtils.isEmpty(class.getXx3)) { //如果为日期
          		Date utilbegin = sdf.parse(class.getXx3);
                 boolQueryBuilder.must(QueryBuilders.rangeQuery("xx3").gte(new Date(utilbegin.getTime())));
              
            }
        }
      searchBuilder.query(boolQueryBuilder);
      int fromRow = 0;//表示第一页,从第一行开始
        if(pageNum > 1){
            fromRow = (pageNum-1)*pageSize;
        }
        log.info(searchBuilder.toString());
        Search search = new Search.Builder(searchBuilder.toString())
                .addIndex(index).addType(type)
                .setParameter(Parameters.FROM, fromRow)
                .setParameter(Parameters.SIZE, pageSize)
                .build();
        JestResult result = null;
         try {
            result = jestClient.execute(search);
            List<Class> jrdata = result.getSourceAsObjectList(Class.class);
            int total=jrdata.size();
            if (null!=jrdata && jrdata.size()>0) {
                total = 	result.getJsonObject().get("hits").getAsJsonObject().get("total").getAsInt();//总条数
                }
                }
             PageInfo<Class> pageInfo=new PageInfo<>(jrdata);
            pageInfo.setTotal(total);
            pageInfo.setPageNum(pageNum);
            pageInfo.setPageSize(pageSize);
            Long pages;
            if(pageInfo.getTotal()%pageSize==0){
                pages=pageInfo.getTotal()/pageSize;
            }else{
                pages=(pageInfo.getTotal()/pageSize)+1;
            }
            pageInfo.setPages(pages.intValue());
            return pageInfo;
        } catch (IOException e) {
            e.printStackTrace();
        }
        return null;   
  }
  

猜你喜欢

转载自blog.csdn.net/qq_38631790/article/details/89469853