以下是一个使用Elasticsearch的Python客户端(elasticsearch-py)来实现按多个字段聚合并统计前10个问题和答案数量的代码示例:
from elasticsearch import Elasticsearch
# 创建一个Elasticsearch客户端
es = Elasticsearch()
# 聚合查询
aggs_query = {
"size": 0,
"aggs": {
"top_questions": {
"terms": {
"field": "question.keyword",
"size": 10
},
"aggs": {
"top_answers": {
"terms": {
"field": "answer.keyword",
"size": 10
}
}
}
}
}
}
# 执行聚合查询
result = es.search(index="your_index_name", body=aggs_query)
# 解析结果
top_questions = result["aggregations"]["top_questions"]["buckets"]
# 遍历每个问题
for question in top_questions:
question_text = question["key"]
question_count = question["doc_count"]
# 打印问题和数量
print("Question: {} (Count: {})".format(question_text, question_count))
# 遍历每个答案
top_answers = question["top_answers"]["buckets"]
for answer in top_answers:
answer_text = answer["key"]
answer_count = answer["doc_count"]
# 打印答案和数量
print(" Answer: {} (Count: {})".format(answer_text, answer_count))
请注意替换your_index_name
为您实际使用的索引名称。此代码将按问题和答案字段聚合数据,并打印每个问题和答案的数量。您可以根据需要自行修改代码来适应您的需求。
上一篇:按多个字段计数