代码之家  ›  专栏  ›  技术社区  ›  Sachin Sharma

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

  •  0
  • Sachin Sharma  · 技术社区  · 6 年前

    我有大量关于弹性搜索的文档,其中有许多来自不同系统的状态字段。 我想先对es索引应用过滤,获取记录的id,然后从mysql下载。

    i、 我想取一个字段的所有值,比如cid,作为es响应中的数组。

    如果我只需要一个_source[“cid”],它仍然提供单独的文档,而且速度太慢(我想获取大约100万条记录)。 另一种选择是使用术语聚合,这样更快,但仍然为每个id提供单独的bucket。

    是否有一种解决方法可以从中获取这些文档的许多id(使用aggregation/script/query)?

    目前我正在做:

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

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

    0 回复  |  直到 6 年前