繁体   English   中英

带过滤的elasticsearch术语聚合

[英]elasticsearch term aggregation with filtering

我在foo索引中得到了这样的实体:

{ids: ["aa", "bb"]}
{ids: ["aa", "cc"]}
{ids: ["ee"]}
{ids: ["ff" , "cc"]}

基本上我想知道是否有 ids aaee 我试图用术语聚合来做到这一点

{
    "size": 0,
   "query": {
      "bool": {
        "should": [
             {
                  "terms": {
                    "ids": [
                      "aa", "ee"
                    ],
                    "boost": 1
                 }
              }
           ],
           "adjust_pure_negative": true,
           "boost": 1
         }
      },
  "aggregations": {
    "byid": {
      "terms": {
        "field": "ids",
        "min_doc_count": 1
      }
    }
  }
}

但是这里的问题是,作为响应,我也与所选实体具有的其他ids了聚合,并且在实际情况下有很多,因此我感兴趣的ids的聚合无法响应,我会认为有没有适合他们的项目(但实际上有,但由于期限大小限制而没有回应)

我可以为每个id分别做它而无需 aggs 只是得到一个count ,但它们有很多,而且会非常昂贵。

基于聊天,发现没有包含id的文档是不需要的,因此不需要聚合,现在搜索结果中是否存在特定的id是主要问题。

有几种方法:

  1. 在每个子请求中使用带有单个 id 的 multi_search
  2. 使用包含所有 id 的单个搜索请求,但在响应中使用脚本或source_filtering和搜索 id 进行后处理。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM