代码示例:
from elasticsearch import Elasticsearch es = Elasticsearch(['localhost:9200'])
query = { "query": { "match": {"name": "John"} }, "aggs": { "concat_results": { "terms": { "script": """if (doc['name'].values.length > 0) { String.join(",", doc['name'].values) }""" } } } }
res = es.search(index="my_index", body=query) results = res['aggregations']['concat_results']['buckets']
concatenated_results = [] for result in results: concatenated_results.append(result['key'])
print(','.join(concatenated_results))
这段代码使用Elastic Search的聚合功能,将查询结果中的值合并到一个列表中。在这个例子中,我们从名为“my_index”的索引中查找所有姓名是“John”的文档。在聚合中,我们使用一个名为“concat_results”的桶,使用内置的script语法将结果合并起来。在以上示例中,我们使用了一个简单的Python for-loop将聚合中每个结果的键加入到另一个叫做“concatenated_results”的列表中。最后,我们使用Python的join()方法将这些结果用逗号分隔并输出。