【发布时间】:2015-12-17 14:21:08
【问题描述】:
我从事弹性搜索已经有一段时间了……我最近遇到了一个问题。
我想按弹性搜索索引中的特定列进行分组。该特定列的值包含连字符和其他特殊字符。
SearchResponse res1 = client.prepareSearch("my_index")
.setTypes("data")
.setSearchType(SearchType.QUERY_AND_FETCH)
.setQuery(QueryBuilders.rangeQuery("timestamp").gte(from).lte(to))
.addAggregation(AggregationBuilders.terms("cat_agg").field("category").size(10))
.setSize(0)
.execute()
.actionGet();
Terms termAgg=res1.getAggregations().get("cat_agg");
for(Bucket item :termAgg.getBuckets()) {
cat_number =item.getKey();
System.out.println(cat_number+" "+item.getDocCount());
}
这是我为了在“my_index”中按“category”列获取数据而编写的查询。
运行代码后我期望的输出是:
category-1 10
category-2 9
category-3 7
但我得到的输出是:
category 10
1 10
category 9
2 9
category 7
3 7
我已经解决了一些问题,例如this one,但无法通过这些答案解决我的问题。
【问题讨论】:
标签: java elasticsearch aggregation