栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Es terms include 聚合过滤

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Es terms include 聚合过滤

学习了聚合es聚合的例子,如何对结果进行过滤呢?

"terms": {
            "field": "color.keyword",  
            "include": [],
            "exclude": []
         }

里面有include 和 exclude属性。

看Java里面的 new IncludeExclude 支持多种属性,正则,各种数据类型。

具体怎么操作,看实际的需要去尝试。

Es例子

只统计红色和蓝色的
GET /car_statics_index/_search
{
    "size": 0, 
   "aggs": {
      "colors": {
         
         "terms": {
            "field": "color.keyword",  
            "include": ["red","blue"] 
         }
      }
   }
}

排除红色的:
GET /car_statics_index/_search
{
    "size": 0, 
   "aggs": {
      "colors": {
         
         "terms": {
            "field": "color.keyword",  
            "exclude": ["red"] 
         }
      }
   }
}

Java 参数处理:

如果是java要es的怎么处理参数呢?

代码目前只考虑数组类型的

String[] includeArr = null, excludeArr = new String[0];
List includes = (List) aggParam.get("include");
List excludes =  (List) aggParam.get("exclude");
if(includes != null){
    includeArr = ListUtils.emptyIfNull(includes).stream().map(Object::toString).toArray(String[]::new);
}
if(excludes != null){
    excludeArr = ListUtils.emptyIfNull(excludes).stream().map(Object::toString).toArray(String[]::new);
}
IncludeExclude includeExclude = new IncludeExclude(includeArr , excludeArr);
aggregationBuilder = AggregationBuilders.terms(aggName).field(fieldValue).includeExclude(includeExclude).size(size); 

包括includeArr的默认为null,取全部; 排除的excludeArr默认为空数组

数组的类型比较多,都改成字符串数组的去处理。

总结:

    写es的时候,对一些语法不熟悉的时候,先去es官网 看看相关的内容,或是去dev控制台那去敲一敲,看看其中有没什么属性。网上找不到答案的时候,多试试其中的属性,有时候会找到想要的答案。

 

转载请注明:文章转载自 www.mshxw.com
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号