从Elasticsearch索引中获取唯一术语的任何有效方法

时间:2015-06-21 03:01:01

标签: elasticsearch pyelasticsearch elasticsearch-marvel

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

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个唯一术语的术语聚合。但是获得约400,000个JSON的JSON将需要内存。就像解析所有搜索结果一样,我们可以使用scan-scroll。有没有什么方法可以解析所有独特的术语而不加载所有内存?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

虽然您无法滚动聚合,但您可以通过添加查询请求来检索更小,更易于管理的子集。例如,您可以请求以字母A开头的所有唯一字词,依此类推。调整查询,直到您对最大子集的大小感到满意为止。