我想在一个查询中从ES中的一个文档生成多个文档。例如:
原始文件:
"_source":{
"name": "Name1",
"values": [100,200,300]
}
黄金查询的生成文档:
"_source":{
"name": "Name1",
"value": 100,
"sequence":1
}
"_source":{
"name": "Name1",
"value": 200,
"sequence":2
}
"_source":{
"name": "Name1",
"value": 300,
"sequence":3
}
我担心的是空间,我对CPU和内存都很满意。这意味着我不希望以查询的方式存储我的文档。
@val
答案 0 :(得分:0)
我认为你不会找到一个查询来做你想要的。弹性存储并返回文档。您可以过滤掉您想要专门返回的有关文档的内容,但无论它返回什么,它仍将是它存储的文档。返回的结果集将实际文档作为返回的一个组成部分:
"hits": [
{
"_index": "test",
"_type": "doc",
"_id": "1",
"_score": 0.2876821,
"_source": {
"name": "Name1",
"values": [
100,
200,
300
]
}
}
]
我不完全确定你的目标,但你可能得到的最接近的是对值的汇总,以显示哪些文档符合这些值。
{
"size" : 0,
"aggs" : {
"values" : {
"terms" : {
"size" : 10,
"field" : "values"
},
"aggs" : {
"hits" : {
"top_hits" : {}
}
}
}
}
}
问题在于top_hits
并不意味着每个桶返回大的结果集,只是最相关的。因此,根据您要执行的操作,您可能需要单独存储它们,或者自己进行后期处理以创建每个值的结果。