我正在尝试对包含日期时间和CPU时间以及服务器名称的文档进行聚合。我想在最近的日期找到平均CPU时间。我有以下查询部分工作它给我平均CPU时间,但没有在最新日期它只是随机选择日期。
client.prepareSearch("myindex").
setTypes("mytype").
setQuery(
QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),
FilterBuilders.andFilter(FilterBuilders.termFilter("server","x")))).
addAggregation(AggregationBuilders.avg("cpu_agg")
.field("dt_time").field("cpu_time"))
.get()
请指导。我希望最新日期的avg cpu时间说今天的日期。我是ElasticSearch的新手。提前谢谢。
答案 0 :(得分:3)
client.prepareSearch("myindex").
setTypes("mytype").
setQuery(
QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),
FilterBuilders.andFilter(FilterBuilders.termFilter("server","x")))).
addAggregation(AggregationBuilders.avg("cpu_agg")
.field("dt_time").field("cpu_time"))
.get()
查看部分(首先将字段设置为dt_time并替换为cpu_time),这意味着为cpu_time构建聚合,
如果你想在今天的日期获得cpu时间,那么一种方法是使用日期过滤器,
FilterBuilders.andFilter(FilterBuilders.termFilter("server","x"),FilterBuilders.rangeFilter("dt_time").to(to).from(from))))
对于您的问题,从=到= today_date(或上次日期)
最后,
client.prepareSearch("myindex").
setTypes("mytype").
setQuery(
QueryBuilders.filteredQuery(QueryBuilders.matchAllQuery(),
FilterBuilders.andFilter(FilterBuilders.termFilter("server", "x"), FilterBuilders.rangeFilter("dt_time").to("to").from("from")))).
addAggregation(AggregationBuilders.avg("cpu_agg")
.field("cpu_time"))
.get();