面试题答案
一键面试文本字段
- 统计文档数量:使用简单的
terms
聚合,它会统计每个文本值出现的文档数,相当于统计包含该文本字段值的文档数量。
{
"aggs": {
"text_field_count": {
"terms": {
"field": "text_field_name"
}
}
}
}
- 统计唯一值数量:上述
terms
聚合的桶数量,就代表了唯一值的数量。如果想直接得到唯一值数量,可以使用cardinality
聚合。
{
"aggs": {
"unique_text_field_count": {
"cardinality": {
"field": "text_field_name"
}
}
}
}
数字字段
- 统计文档数量:可以使用
terms
聚合对数字字段进行分组统计,从而得到文档数量。
{
"aggs": {
"number_field_count": {
"terms": {
"field": "number_field_name"
}
}
}
}
- 统计唯一值数量:同样使用
cardinality
聚合。
{
"aggs": {
"unique_number_field_count": {
"cardinality": {
"field": "number_field_name"
}
}
}
}
日期字段
- 统计文档数量:使用
date_histogram
聚合按日期区间分组来统计文档数量。例如按天分组:
{
"aggs": {
"date_field_count": {
"date_histogram": {
"field": "date_field_name",
"calendar_interval": "day"
}
}
}
}
- 统计唯一值数量:日期字段如果是唯一标识(如事件发生时间且不重复),可以直接用
cardinality
聚合。
{
"aggs": {
"unique_date_field_count": {
"cardinality": {
"field": "date_field_name"
}
}
}
}
在以上示例中,text_field_name
、number_field_name
、date_field_name
需替换为实际索引中的字段名称。