Es terms include 聚合过滤

家电修理 2023-07-16 19:16www.caominkang.com电器维修

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

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

里面有include 和 exclude属性。

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

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

Es例子

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

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

Java 参数处理

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

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

String[] includeArr = null, excludeArr = ne 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[]::ne);
}
if(excludes != null){
    excludeArr = ListUtils.emptyIfNull(excludes).stream().map(Object::toString).toArray(String[]::ne);
}
IncludeExclude includeExclude = ne IncludeExclude(includeArr , excludeArr);
aggregationBuilder = AggregationBuilders.terms(aggName).field(fieldValue).includeExclude(includeExclude).size(size); 

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

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

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

 

Copyright © 2016-2025 www.caominkang.com 曹敏电脑维修网 版权所有 Power by