如何在单个弹性搜索聚合存储桶中获取字段的所有唯一值?

时间:2019-02-06 10:02:42

标签: java elasticsearch download

我有大量关于弹性搜索的文档,其中包含来自各种系统的许多状态字段。 我想先对es索引进行过滤,以获取记录的ID,然后从mysql下载这些ID。

即我想获取一个字段cid的所有值,作为es响应中的数组。

如果我只是要求提供_source [“ cid”],那仍然会给出单个文档,并且速度太慢(我想获取〜1M条记录)。 另一种选择是使用术语聚合,速度更快,但仍然为每个ID提供单独的存储桶。

有没有一种解决方法,我可以获取文档的那么多id(使用聚合/脚本/查询)?

目前我正在做:

{
 "size": 0, 
 "query":{
   "bool": {
     "filter": {
       "term": {
         "source": "web"
       }
     }
   }
 },
 "aggs": {
   "ids": {
     "terms": {
       "field": "cid",
       "size": 10000
     }
   }
 }
}

任何解决方案或建议都会有所帮助。

0 个答案:

没有答案