Elasticsearch聚合:访问其他字段的策略

时间:2019-04-29 02:37:21

标签: elasticsearch nest

我正在使用以下代码进行汇总。它只返回ID,我也想返回Name。几年前,我们做了一个项目,我们索引了一个名为idName的字段(由|分隔),但这是一个混乱的解决方案。我想知道使用最新版本的Elastic是否有更好的方法?

.Aggregations(aggs => aggs
    .Nested("nested_cat", nested => nested
        .Path(p => p.Categories)
        .Aggregations(a1 => a1
            .Terms("terms_cat_id", terms1 => terms1
                .Field(f1 => f1.Categories.First().Id)
            )
        )
    )
)

我阅读了另外两个选项。一种是进行子聚合,但是以下方法似乎无效:

.Aggregations(aggs => aggs
    .Nested("nested_cat", nested => nested
        .Path(p => p.Categories)
        .Aggregations(a1 => a1
            .Terms("terms_cat_id", terms1 => terms1
                .Field(f1 => f1.Categories.First().Id)
                .Aggregations(a2 => a2
                    .Terms("terms_cat_name", terms2 => terms2
                        .Field(f2 => f2.Categories.First().Name)
                    )
                )
            )
        )
    )
)

我还读到我可以使用脚本,但是我也没有使用它。

1 个答案:

答案 0 :(得分:0)

通过将category.name映射为“关键字”而不是“文本”,我能够使子聚合起作用