Home Articles

elasticsearch中嵌套字段的平均和直方图聚合

Asked
Viewed 442 times
2

我在elasticsearch中有一个嵌套文档,如下所示:

{
  {
  "doctxt": "doca",
    "nested": [
      {
        "pos": 1,
        "txt": "terma"
      },
      {
        "pos": 2,
        "txt": "termb"
      },
      {
        "pos": 3,
        "txt": "termc"
      }
    ]
  },
  {
  "doctxt": "docb",
    "nested": [
      {
        "pos": 1,
        "txt": "termd"
      },
      {
        "pos": 2,
        "txt": "terma"
      },
      {
        "pos": 3,
        "txt": "termb"
      }
    ]
  }
}

有效的聚合查询:

特定术语的总计数(match_all查询,术语txt上的聚合),结果:

terma: 2
termb: 2
termc: 1
termd: 1

特定术语的txt字段上的面(过滤术语txt,术语txt上的聚合),结果:

terma: termb (2), termc (1), termd (1)
termb: terma (2), termc (1), termd (1)
termc: terma (1), termb (1)
termd: terma (1), termb (1)

我不能用这个文件做的是:

特定术语的平均pos(我最终得到整个嵌套位置的平均值,在这种情况下,任何术语总是2),预期结果:

terma: 1.5
termb: 2.5
termc: 3
termd: 1

特定术语的直方图(与上述相同的原因不起作用),预期结果:

terma: pos 1 (1), pos 2 (1)
termb: pos 2 (1), pos 3 (1)
termc: pos 3 (1)
termd: pos 1 (1)

如果我有平面文件(doca-1-terma,doca-2-termb,doca-3-termc,docb-1-termd,......),我会得到预期的结果 . 这是聚合嵌套文档的限制吗?我应该以平面格式和当前嵌套格式存储两次数据吗?

1 Answer

Related