-1

我的目标是将所有唯一术语及其 md5 哈希值存储在数据库中。我有一个 100 万个文档索引,其中包含约 400000 个唯一术语。我从aggregations在 elasticsearch 中使用得到了这个数字。

GET /dt_index/document/_search
{
  "aggregations": {
    "my_agg": {
      "cardinality": {
        "field": "text"
      }
    }
  }
}

我可以使用以下方法获得独特的条款:

GET /dt_matrix/document/_search
{
  "aggregations": {
    "my_agg": {
      "term": {
        "field": "text",
        "size": 100
      }
    }
  }
}

这给了我 10 个搜索结果以及 100 个唯一术语的术语聚合。但是获得约 400000 个术语的 JSON 需要内存。就像解析我们可以使用的所有搜索结果一样scan-scroll。有什么方法可以解析所有唯一术语而不将所有内容加载到内存中?

4

2 回答 2

0

您无法滚动浏览聚合结果。相反,您应该在索引时将这些唯一术语索引到单独的索引或类型中,然后对其进行正常分页。

于 2015-06-21T06:17:02.980 回答
0

尽管您不能滚动浏览聚合,但您可以通过添加到查询请求中来检索更小、更易于管理的内存子集。例如,您可以请求以字母 A 开头的所有唯一术语,依此类推。调整您的查询,直到您对最大子集的大小感到满意为止。

于 2015-06-21T07:01:40.957 回答