是否可以在elasticsearch中将查询结果用于另一个查询?

q43xntqr  于 2021-06-10  发布在  ElasticSearch
关注(0)|答案(2)|浏览(437)

我想合并两个查询,第一个查询返回一个包含一些字段的文档。现在我想在新查询中使用其中一个字段,而不创建两个单独的字段。为了完成我的任务,有没有办法把它们结合起来?
这是第一个查询

{
"_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"
        }
    }
]

}

3npbholx

3npbholx1#

如果您想使用第一个查询的结果作为第二个查询的输入,那么在elasticsearch中是不可能的。但如果您分享您的查询和用例,我们可能会建议您使用更好的方法。

2q5ifsrm

2q5ifsrm2#

elasticsearch不允许子查询或内部查询。

相关问题