Java查询ES某个时间段或者范围的数据

1.引入SpringData相关Esjar包

附上pom文件:

    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

    4.0.0

    com.leyou.demo

    elasticsearch

    0.0.1-SNAPSHOT

    jar

    elasticsearch

    Demo project for Spring Boot

   

    org.springframework.boot

    spring-boot-starter-parent

    2.0.2.RELEASE

   

   

   

    UTF-8

    UTF-8

    1.8

   

   

   

    org.springframework.boot

    spring-boot-starter-data-elasticsearch

   

   

    org.springframework.boot

    spring-boot-starter-test

    test

   

   

   

   

   

    org.springframework.boot

    spring-boot-maven-plugin

   

   

   



2.编写application.yml文件(ES配置,xml同理)

spring:

      data:

        elasticsearch:

          cluster-name: elasticsearch

          cluster-nodes: 127.0.0.1:9300



3.创建与ES中所需数据对应的实体类(字段需对应,顺序应该无所谓不确定)

@Data

@Document(indexName = "这里是索引名称",type = "这里是文档名称")

public class Item {

    @Id

    private String Id;

    private String name;

    private Long time;

}

PS:

可以通过实体类创建索引


4.创建Dao

@Component

public interface ESDao extends ElasticSearchRepository<实体类,类型>{}


5.Service

@Service

public class EService {

    @AutoWired

    private ESDao esd;

    public void searchByTime(){

        BoolQueryBuilder bb = boolQuery();

        bb.must(rangeQuery(时间的字段名).gt(开始时间).lt(结束时间));

        SearchQuery search = new NativeSearchQueryBuilder()

                .withQuery(bb)

               .withPageable(PageRequest.of(取数据的第几条开始,第几条结束)).build();

        Page<实体类> result = esd.search(search);

        syso(result.getNumberOfElements())

    }

}


办公机思路手打,仅供参考,尽信书不如无书!!!


办公机没办法截代码,附上原博客链接Java操作ES增删改查

你可能感兴趣的:(Java查询ES某个时间段或者范围的数据)