elasticsearch

时间:2017-12-26 09:04:32

标签: node.js elasticsearch

这是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条记录分配偏移量? 谢谢

2 个答案:

答案 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,但那些只返回匹配的子文档,我假设您想要通过所有这些文档自由分页。

所以你最后的希望是编写脚本,在那里你可以构建任何你想要的东西。但这可能不是你想要的:

  1. 你真的需要在这里分页吗?结果以压缩方式传输,因此分页的开销可能比一次传输数据要大得多。
  2. 如果您确实需要分页,因为您的阵列非常庞大,您可能需要重新构建文档。