根据术语筛选器列表,弹性搜索术语聚合无法正常工作

时间:2018-01-24 13:44:22

标签: json elasticsearch

以下是我的查询:

{
  "size" : 0,
  "query" : {
    "bool" : {
      "must" : {
        "match_all" : { }
      },
      "filter" : {
        "bool" : {
          "must" : [ {
            "terms" : {
              "unblindMemberId" : [ "first", "erw", "810182628017", "ewrew", "swer", "rew", "wer", "ewr", "ewr", "r", "r", "dsf", "810218592401", "sd", "s", "last" ]
            }
          }, {
            "bool" : {
              "must" : {
                "exists" : {
                  "field" : "udf7_lab"
                }
              }
            }
          } ]
        }
      }
    }
  },
  "aggregations" : {
    "members" : {
      "terms" : {
        "field" : "unblindMemberId"
      },
      "aggregations" : {
        "top_risk" : {
          "top_hits" : {
            "size" : 1,
            "_source" : {
              "includes" : [ "udf7_lab" ],
              "excludes" : [ "" ]
            },
            "sort" : [ {
              "svc_service_date" : {
                "order" : "desc"
              }
            } ]
          }
        }
      }
    }
  }
}

在上面的查询中,聚合不能正常工作。 第一个元素的数据即第一个元素没有被拉动。但是,当unblindMemberId的最后一个元素被移除时,即。持续。首先是拉数据。 此外,只添加第一个和最后一个元素  即。 unblindMemberId:["first","last"] 正在为两个ID提取记录。

在没有聚合的情况下执行查询时,术语过滤器正常工作,因为所有unblindMemberIds都被拉出,包括第一个和最后一个ID。

第一个和最后一个列表中的其他记录也没有被提取。

在我看来,

"aggregations" : {
    "members" : {
      "terms" : {
        "field" : "unblindMemberId"
      }
}

此特定聚合无法提取所需记录。我无法确定原因,因为术语聚合的基本功能不起作用。任何帮助都非常感谢。

1 个答案:

答案 0 :(得分:0)

问题在于聚合术语。我没有设置size = 0,因为默认情况下,当未设置大小时,只会拉出10个数据。因此我通过添加大小来解决:

"terms": {
        "field": "unblindMemberId",
        "size":0
      }