java中实现es查询48小时内以及某个城市的的数据
时间: 2024-02-23 12:58:44 浏览: 94
要在Java中实现ES查询48小时内以及某个城市的数据,可以使用ES的Java API,具体实现方法如下:
```java
// 创建ES客户端
RestHighLevelClient client = new RestHighLevelClient(
RestClient.builder(new HttpHost("localhost", 9200, "http")));
// 获取当前时间
long now = System.currentTimeMillis();
// 计算起点时间
long start = now - 48 * 60 * 60 * 1000L;
// 构造查询条件
QueryBuilder query = QueryBuilders.boolQuery()
.must(QueryBuilders.rangeQuery("timestamp_column").gte(start).lte(now))
.filter(QueryBuilders.termQuery("city_column", "city_name"));
// 构造搜索请求
SearchRequest searchRequest = new SearchRequest("index_name");
SearchSourceBuilder sourceBuilder = new SearchSourceBuilder();
sourceBuilder.query(query);
searchRequest.source(sourceBuilder);
// 执行搜索操作
SearchResponse searchResponse = client.search(searchRequest, RequestOptions.DEFAULT);
// 处理搜索结果
SearchHits searchHits = searchResponse.getHits();
for (SearchHit hit : searchHits) {
// 处理每个文档的数据
// ...
}
// 关闭ES客户端
client.close();
```
其中,index_name是要查询的索引名称,timestamp_column是存储时间戳的字段名,city_column是存储城市的字段名,city_name是要查询的城市名称。在查询条件中使用了boolQuery,同时设置了时间范围和城市名称。需要注意的是,城市名称应该是一个精确匹配的词条,因此使用了termQuery。
阅读全文