elasticsearch 使用Elasticsearch的Azure数据工厂REST API分页
在开发将使用Elasticsearch作为源的管道时,我遇到了与问题相关的分页。我正在使用SQL Elasticsearch API。基本上,我已经开始在《邮递员》中做请求了,效果很好。请求主体如下所示:elasticsearch 使用Elasticsearch的Azure数据工厂REST API分页,elasticsearch,azure-data-factory,restapi,elasticsearch,Azure Data Factory,Restapi,在开发将使用Elasticsearch作为源的管道时,我遇到了与问题相关的分页。我正在使用SQL Elasticsearch API。基本上,我已经开始在《邮递员》中做请求了,效果很好。请求主体如下所示: { “查询”:“按Id从“核心”订单中选择Id、名称、所有权、修改日期”, “获取大小”:20, “光标”:” } 在响应体中第一次运行后,它包含游标字符串,该字符串是指向下一页的指针。如果在postman中,我发送请求并提供来自上一个请求的游标值,则返回第二页的数据,依此类推。我正试图在A
{
“查询”:“按Id从“核心”订单中选择Id、名称、所有权、修改日期”,
“获取大小”:20,
“光标”:”
}
在响应体中第一次运行后,它包含游标字符串,该字符串是指向下一页的指针。如果在postman中,我发送请求并提供来自上一个请求的游标值,则返回第二页的数据,依此类推。我正试图在Azure Data Factory中归档相同的结果。为此,我使用复制活动来存储对Azure blob的响应。源的设置如下。
这是身体的表达
{
“查询”:“从\“{variables('TableName')}”中选择Id、名称、所有权、modifiedDate,其中按Id排序”,“获取大小”:@{variables('Rows')},“游标”:”
}
我不知道如何正确设置分页规则。管道正常工作,但仅适用于第一个请求。我尝试设置Headers.cursor和expression$.cursor,但这种设置会导致无限循环,管道会因Elasticsearch限制而失败
我也曾尝试在上阅读该文档,但在使用示例方面似乎非常有限,难以理解
有人能帮我理解如何利用分页功能构建管道吗?
使用光标的响应如下所示:
{
"columns": [
{
"name": "companyId",
"type": "integer"
},
{
"name": "name",
"type": "text"
},
{
"name": "ownership",
"type": "keyword"
},
{
"name": "modifiedDate",
"type": "datetime"
}
],
"rows": [
[
2,
"mic Inc.",
"manufacture",
"2021-03-31T12:57:51.000Z"
]
],
"cursor": "g/WuAwFaAXNoRG5GMVpYSjVWR2hsYmtabGRHTm9BZ0FBQUFBRUp6VGxGbUpIZWxWaVMzcGhVWEJITUhkbmJsRlhlUzFtWjNjQUFBQUFCQ2MwNWhaaVIzcFZZa3Q2WVZGd1J6QjNaMjVSVjNrdFptZDP/////DwQBZgljb21wYW55SWQBCWNvbXBhbnlJZAEHaW50ZWdlcgAAAAFmBG5hbWUBBG5hbWUBBHRleHQAAAABZglvd25lcnNoaXABCW93bmVyc2hpcAEHa2V5d29yZAEAAAFmDG1vZGlmaWVkRGF0ZQEMbW9kaWZpZWREYXRlAQhkYXRldGltZQEAAAEP"
}
我终于找到了解决办法,希望它对社区有用。 基本上,需要做的是将解决方案分为四个步骤 步骤1:提出问题描述中的第一个请求,并将文件转移到blob。 步骤2读取blob文件并获取光标值,将其设置为变量 步骤3:使用已更改的正文继续请求数据
{"cursor" : "@{variables('cursor')}" }
管道如下所示:
分页的配置如下所示
. 这是一种解决方法,因为服务器忽略了此标头,但我们需要有允许在循环中发送请求的内容。服务器返回的响应是否包含下一页的绝对或相对地址?微软官方教程将直接发送下一页请求的绝对地址。不,很遗憾,响应只包含游标。如果我在请求体中传递这个游标,响应将包含下一页的数据。游标是否包含下一页的信息?你能给我看一下cource的游标吗。很抱歉我将把它添加到问题中