面试题答案
一键面试- 使用Elasticsearch DSL(以Python的
elasticsearch
库为例):
from elasticsearch import Elasticsearch
es = Elasticsearch()
body = {
"aggs": {
"behavior_type_count": {
"terms": {
"field": "behavior_type.keyword",
"order": {
"_count": "desc"
}
}
}
}
}
response = es.search(index="your_index_name", body=body)
for bucket in response['aggregations']['behavior_type_count']['buckets']:
print(f"行为类型: {bucket['key']}, 出现次数: {bucket['doc_count']}")
- 使用Kibana Dev Tools:
POST your_index_name/_search
{
"size": 0,
"aggs": {
"behavior_type_count": {
"terms": {
"field": "behavior_type.keyword",
"order": {
"_count": "desc"
}
}
}
}
}
上述代码中:
terms
聚合用于对behavior_type
字段进行分组。由于behavior_type
通常是文本类型,为了准确聚合,我们使用.keyword
后缀(假设该字段有keyword子字段,这是Elasticsearch处理文本字段聚合的常见方式)。order
参数指定按_count
(即每个分组的文档数量)降序排列。- 在Python代码中,通过
elasticsearch
库连接Elasticsearch集群并执行搜索请求,然后遍历聚合结果打印每种行为类型及其出现次数。 - 在Kibana Dev Tools中,直接发送POST请求到指定索引进行聚合查询,并可在响应中查看结果。