es中数据范围查询

1.在es中,支持范围查询的字段类型有:

数据类型      说明
integer_range 有符号32位整数范围 2-32 ~ 232-1
float_range     单精度32位IEEE 754 浮点数范围
long_range     有符号64位整数范围 2-64 ~ 264-1
double_range     双精度64位IEEE 754 浮点数范围
date_range     自系统历元以来无符号64位整数范围内的毫秒数范围
ip_range     支持 IPv4 或者 IPv6 (or mixed) 地址的IP范围

注意:对于日期等类别,最好开始就设置对类型,不要设置成text,因为es中mapping是不能修改的

2.对于范围查询,这里以日期类型为例

//范围查询
    public void testEs9(){

        List Persons = new ArrayList<>();
        JestClientFactory factory = new JestClientFactory();
        factory.setHttpClientConfig(new HttpClientConfig
                .Builder("http://127.0.0.1:9200")
                .connTimeout(5000)
                .multiThreaded(true).connTimeout(1000)
                .build());
        JestClient jestClient = factory.getObject();
        SearchSourceBuilder ssb = new SearchSourceBuilder();
//format可以设置日期格式
        RangeQueryBuilder rq = QueryBuilders.rangeQuery("test2").gte("2019-11-05").lte("2019-11-15").format("yyyy-MM-dd");

        MatchAllQueryBuilder mq = QueryBuilders.matchAllQuery();
        SearchSourceBuilder q = ssb.query(rq);
        Search build = new Search.Builder(q.toString()).addIndex("quanze").addType("quanze").build();
        try {
            SearchResult res = jestClient.execute(build);
            if(res.isSucceeded()){
                JsonArray jsonArray = res.getJsonObject().getAsJsonObject("hits").getAsJsonArray("hits");
            }
        } catch (IOException e) {
            e.printStackTrace();
        }

    }
}

3.在mapping中添加日期类型的字段

es中数据范围查询_第1张图片

你可能感兴趣的:(es)