分布式搜索引擎ElasticSearch(插入数据及java api 二)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分布式搜索引擎ElasticSearch(插入数据及java api 二)相关的知识,希望对你有一定的参考价值。

通过Aggregation来分组查询:

  

SearchResponse response = client.prepareSearch(INDEX_DOUBAN).setTypes(TYPE_DOUBAN)
  .addAggregation(
      AggregationBuilders.terms("by_"+tag).field(tag).size(1000)
              )

.execute().actionGet();

Terms terms = response.getAggregations().get("by_"+tag);
for(Bucket b:terms.getBuckets()){
// Sum sum = b.getAggregations().get("sum");
list.add((String) b.getKey());
//System.out.println("filedname:"+b.getKey()+" docCount:"+b.getDocCount());
}

这里要注意的是:返回数量不是和之前一样setSize(),而是要设置AggregationBuilders的size才行;其次:对于非数字和英文的字段,这样的组合查询默认会进行分词处理,所以要用mapping来设置字段的分词与否,这部分后面详细叙述。

以上是关于分布式搜索引擎ElasticSearch(插入数据及java api 二)的主要内容,如果未能解决你的问题,请参考以下文章