ElasticSearch-嵌套聚合

kh212irz  于 2022-11-02  发布在  ElasticSearch
关注(0)|答案(1)|浏览(198)

我想在ElasticSearch中形成一个嵌套聚合类型的查询,基本上嵌套聚合有四个层次。
组ID。关键字---方向--计费呼叫类型--应答呼叫持续时间

示例:

"aggregations": {
        "avgCallDuration": {
            "terms": {
                "field": "groupId.keyword",
                "size": 10000,
                "min_doc_count": 1,
                "shard_min_doc_count": 0,
                "show_term_doc_count_error": false,
                "order": [
                    {
                        "_count": "desc"
                    },
                    {
                        "_key": "asc"
                    }
                ]
            },
            "aggregations": {
                "call_direction": {
                    "terms" : {
                        "field": "direction"
                    },
                    "aggregations": {
                        "call_type" : {
                            "terms": {
                                "field": "billingCallType"
                            },

                            "aggregations": {
                                "avg_value": {
                                    "terms": {
                                        "field": "durationCallAnswered"
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }

这是查询的一部分。在运行此查询时,我得到的错误为

“类型”:“非法参数异常”,“原因”:文本字段未针对需要每个文档字段数据(如聚合与排序)得操作进行优化,因此默认情况下禁用这些操作.请改用关键字字段.或者,在[direction]上设置fielddata=true,以便通过取消反转倒排索引来加载字段数据.请注意,这可能会占用大量内存.

有人能解释一下吗?

cld4siwp

cld4siwp1#

Tldr;

如错误状态所示,您正在对文本字段direction执行聚合。
默认情况下,文本字段不支持聚合,因为它非常昂贵(CPU和内存方面)。
这是解决您问题的三种方法,
1.将Map从文本更改为关键字(将需要re indexing,这是查询数据的最有效方式)
1.更改要添加到此字段的Mapfielddata: true(灵活,但未优化)
1.不要对该字段进行聚合:)

相关问题