【问题标题】:How to exclude terms in nested composite aggregation如何在嵌套复合聚合中排除术语
【发布时间】:2019-05-09 12:46:15
【问题描述】:

我在 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

【问题讨论】:

    标签: elasticsearch elasticsearch-aggregation


    【解决方案1】:

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

    {
      "size": 0,
      "aggs": {
        "geo": {
          "nested": {
            "path": "geo"
          }
        },
        "aggs": {
          "filter": {
            "bool": {
              "must_not": {
                "prefix": {
                  "geo.dest": "cancel"
                }
              }
            }
          },
          "aggs": {
            "table": {
              "composite": {
                "size": 10,
                "sources": [
                  {
                    "stk1": {
                      "terms": {
                        "field": "geo.src"
                      }
                    }
                  },
                  {
                    "stk2": {
                      "terms": {
                        "field": "geo.dest"
                      }
                    }
                  }
                ]
              }
            }
          }
        }
      }
    }
    

    【讨论】:

    • 感谢@val 的及时回复。我实际上只想省略包含“取消”的数组元素,而不是整个文档。你能重新检查一下吗?
    • 您错过了嵌套中的“路径”。我对其进行了测试,但现在它给出了这个错误:- [composite] 聚合不能与类型为 [FilterAggregatorFactory] 的父聚合一起使用
    • 你说得对,我的错。 pull request 将对此进行补救。不过,不确定何时发布修复程序。
    • 您会建议任何解决方法吗? BTW,谢谢支持!非常感谢。
    • 您确定需要使用nested 类型吗?你能展示一个示例文件吗?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-06
    • 2019-01-27
    • 2021-06-06
    • 1970-01-01
    相关资源
    最近更新 更多