如何在嵌套复合聚合中排除术语

时间:2019-05-09 12:46:16

标签: elasticsearch elasticsearch-aggregation

我正在对Elasticsearch中的嵌套字段使用复合聚合,但是我想从结果中排除一些术语。

此聚合有效:

{
  "size": 0,
  "geo": {
    "communication": {
      "nested": {
        "path": "geo"
      },
      "aggs": {
        "table": {
          "composite": {
            "size": 1000,
            "sources": [
              {"stk1": {"terms": {"field": "geo.src"}}},
              {"stk2": {"terms": {"field": "geo.dest"}}}
            ]
          }
        }
      }
    }
  }
}

但是我想从stk2中排除一些术语,

{
  "size": 0,
  "aggs": {
    "geo": {
      "nested": {
        "path": "geo"
      },
      "aggs": {
        "table": {
          "composite": {
            "size": 1000,
            "sources": [
              {"stk1": {"terms": {"field": "geo.src"}}},
              {"stk2": {"terms": {"field": "geo.dest", "exclude":"cancel"}}}
            ]
          }
        }
      }
    }
  }
}

以上查询无效。

更新1:结果应仅省略数组元素,而不是整个包含“取消”的文档。

我正在使用弹性v6.7

1 个答案:

答案 0 :(得分:0)

我建议使用查询来排除这些文档:

  create view checkd as (
    select wms.id as idWMS
      , wms.pcode as pcodeWMS
      , wms.barcode as barcodeWMS 
    from wms 
    join outerb on  wms.barcodeWMS = concat('0', outerb.barcode));