这是ES的来源:
"_source": {
"queryHash": "query412236215",
"id": "query412236215",
"content": {
"columns": [
{
"name": "Catalog",
"type": "varchar(10)",
"typeSignature": {
"rawType": "varchar",
"typeArguments": [],
"literalArguments": [],
"arguments": [
{
"kind": "LONG_LITERAL",
"value": 10
}
]
}
}
],
"data": [
[
"apm"
],
[
"postgresql"
],
[
"rest"
],
[
"system"
],
[
"tpch"
]
],
"query_string": "show catalogs",
"execution_time": 1979
},
"createdOn": "1514269074289"
}
如何在_source.data中获取n条记录? 让我们说_source.data有100条记录,我一次只想要10条记录,也可以为下10条记录分配偏移量? 谢谢
答案 0 :(得分:0)
看看scripting。据我所知,没有任何内置解决方案,因为Elasticsearch主要用于搜索和过滤文档存储,仅作为次要问题。
答案 1 :(得分:0)
首先,order in _source
is stable,所以这不是完全不可能的:
当您从Elasticsearch获取文档时,任何数组都将在 与索引文档时的顺序相同。 _source字段 你得到的包含与你完全相同的JSON文档 索引。
但是,数组是可索引的可搜索的 - 作为多值字段, 这是无序的。在搜索时,您不能参考"第一个 元素"或者"最后一个元素。"相反,把数组想象成一个包 值。
但是,source filtering并未涵盖此问题,因此您对数组运气不佳。
内心命中也无法帮助你。 They do have options for sort
, size
, and from
,但那些只返回匹配的子文档,我假设您想要通过所有这些文档自由分页。
所以你最后的希望是编写脚本,在那里你可以构建任何你想要的东西。但这可能不是你想要的: