我想合并两个查询,第一个查询返回一个包含一些字段的文档。现在我想在新查询中使用其中一个字段,而不创建两个单独的字段。为了完成我的任务,有没有办法把它们结合起来?
这是第一个查询
{
"_source": {
"includes": [
"data.session"
]
},
"query": {
"bool": {
"must": [
{
"match": {
"field1": "9419"
}
},
{
"match": {
"field2": "5387"
}
}
],
"filter": [
{
"range": {
"timestamp": {
"time_zone": "+00:00",
"gte": "2020-10-24 10:16",
"lte": "2020-10-24 11:16"
}
}
}
]
}
},
"size" : 1
}
下面是返回的响应:
{
"took": 1,
"timed_out": false,
"_shards": {
"total": 1,
"successful": 1,
"skipped": 0,
"failed": 0
},
"hits": {
"total": {
"value": 109,
"relation": "eq"
},
"max_score": 3.4183793,
"hits": [
{
"_index": "file",
"_type": "_doc",
"_id": "UBYCkgsEzLKoXh",
"_score": 3.4183793,
"_source": {
"data": {
"session": "123456789"
}
}
}
]
}
}
我想在另一个查询中使用“data.session”,而不是通过传递第一个查询的结果来重写字段的值。
{
"_source": {
"includes": [
"data.session"
]
},
"query": {
"bool": {
"must": [
{
"match": {
"data.session": "123456789"
}
}
]
}
},
"sort": [
{
"timestamp": {
"order": "asc"
}
}
]
}
2条答案
按热度按时间3npbholx1#
如果您想使用第一个查询的结果作为第二个查询的输入,那么在elasticsearch中是不可能的。但如果您分享您的查询和用例,我们可能会建议您使用更好的方法。
2q5ifsrm2#
elasticsearch不允许子查询或内部查询。