Elasticsearch API 查询简单应用
es API 查询简单使用,网上大多数都是直接使用es脚本语言查询,再此写下es api调用一点小心得
等同于数据库
select * from fk_test where create_date >= xxx and create_date <= xxx
或者
select * from fk_test where amount between 50 and 100
includeLower:包含下界,includeUpper:包含上界
直接上代码:
QueryBuilder qb1 = QueryBuilders.rangeQuery("create_date").from("2018-02-07 15:29:32").to("2018-02-07 15:37:03")
.includeLower(true).includeUpper(true);
BoolQueryBuilder qbs = QueryBuilders.boolQuery().must(qb1);
SearchRequestBuilder requestBuilder = client.prepareSearch("fk_test").setTypes("index_test");
requestBuilder.setQuery(qbs);
SearchResponse response = requestBuilder.setFrom(0).setSize(5).execute().actionGet();
SearchHits hits = response.getHits();
for (int i = 0; i < hits.getHits().length; i++) {
SearchHit hit = hits.getHits()[i];
Map<String, Object> val = hit.getSource();
......
}
等同于数据库
select * from fk_test where create_date is not null and create_date >= xxx and create_date <= xxx
直接上代码:
// 声明where 条件
BoolQueryBuilder qbs = QueryBuilders.boolQuery();
// 根据时间条件查询
QueryBuilder qb1 = QueryBuilders.rangeQuery("create_date").from("2018-05-07").to("2018-05-08")
.includeLower(true).includeUpper(false);
BoolQueryBuilder qbs1 = QueryBuilders.boolQuery().must(qb1);
qbs.must(qbs1);
QueryBuilder qb2 = QueryBuilders.existsQuery("create_date");
BoolQueryBuilder qbs2 = QueryBuilders.boolQuery().must(qb2);
qbs.must(qbs2);
SearchRequestBuilder requestBuilder = client.prepareSearch("fk_test").setTypes("index_test");
requestBuilder.setQuery(qbs);
SearchResponse response = requestBuilder.setFrom(0).setSize(5).execute().actionGet();
SearchHits hits = response.getHits();
for (int i = 0; i < hits.getHits().length; i++) {
SearchHit hit = hits.getHits()[i];
Map<String, Object> val = hit.getSource();
......
}