以下是一个示例代码,演示如何按照嵌套字段的值将从 Elastic 返回的命中结果进行分离:
from elasticsearch import Elasticsearch
# 创建 ElasticSearch 连接
es = Elasticsearch()
# 定义查询,这里的查询可以根据你的需求来修改
query = {
"query": {
"match_all": {}
}
}
# 执行查询
result = es.search(index="your_index", body=query)
# 从结果中提取命中的记录
hits = result['hits']['hits']
# 定义一个字典用于存储分离后的结果
separated_results = {}
# 遍历命中的记录
for hit in hits:
# 获取嵌套字段的值,这里的 "nested_field" 可以根据你的需求来修改
nested_value = hit['_source']['nested_field']
# 检查嵌套字段的值是否已经存在于分离结果中
if nested_value in separated_results:
# 如果存在,则将当前记录添加到该值对应的列表中
separated_results[nested_value].append(hit)
else:
# 如果不存在,则创建一个新的列表,并将当前记录添加进去
separated_results[nested_value] = [hit]
# 打印分离结果
for nested_value, hits in separated_results.items():
print(f"Nested value: {nested_value}")
for hit in hits:
print(f"Hit: {hit}")
print("-----")
在上述示例中,我们首先通过 ElasticSearch 连接到 Elasticsearch 实例。然后定义一个查询,可以根据你的需求进行修改。执行查询后,我们从结果中提取命中的记录。然后遍历命中的记录,获取嵌套字段的值,并根据该值将记录分离到不同的列表中。最后打印分离结果。
注意,上述示例中的 "your_index" 和 "nested_field" 需要根据你的具体情况进行修改,以匹配你在 Elasticsearch 中的索引和嵌套字段。