要按照字段类型为array
from elasticsearch import Elasticsearch
# 创建Elasticsearch客户端连接
es = Elasticsearch()
# 指定索引和字段名
index_name = 'your_index'
field_name = 'your_field'
# 创建查询语句
query = {
"query": {
"match_all": {}
},
"size": 0,
"aggs": {
"top_bm25": {
"terms": {
"field": field_name,
"size": 10
},
"aggs": {
"max_bm25": {
"max": {
"script": {
"source": "_score"
}
}
}
}
}
}
}
# 执行查询
response = es.search(index=index_name, body=query)
# 处理查询结果
buckets = response['aggregations']['top_bm25']['buckets']
for bucket in buckets:
field_value = bucket['key']
max_bm25 = bucket['max_bm25']['value']
print(f"Field Value: {field_value}, Max BM25: {max_bm25}")
在上面的代码中,我们首先创建了一个Elasticsearch客户端连接,并指定了要查询的索引和字段名。然后,我们创建了一个查询语句,其中使用了terms聚合来按照字段值进行分组,并使用max聚合来计算每个分组中的最大bm25得分。最后,我们执行查询并处理查询结果,输出每个字段值及其对应的最大bm25得分。
请注意,上述代码仅提供了一个示例,实际使用时需要根据具体的索引结构和需求进行调整。
上一篇:按照字段分组并统计MongoDB
下一篇:按照字段列表对数组进行排序