首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >elasticsearch中嵌套字段的平均值和直方图聚合

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

Stack Overflow用户
提问于 2014-07-08 20:04:33
回答 1查看 720关注 0票数 2

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

代码语言:javascript
复制
{
  {
  "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聚合),结果:

代码语言:javascript
复制
terma: 2
termb: 2
termc: 1
termd: 1

特定术语的txt字段上的方面(筛选术语txt,聚合术语txt),结果:

代码语言:javascript
复制
terma: termb (2), termc (1), termd (1)
termb: terma (2), termc (1), termd (1)
termc: terma (1), termb (1)
termd: terma (1), termb (1)

对于这个文档,我不能做的是:

特定术语的平均位置(我最终获得整个嵌套位置的平均值,在本例中,任何术语的平均值始终为2),预期结果:

代码语言:javascript
复制
terma: 1.5
termb: 2.5
termc: 3
termd: 1

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

代码语言:javascript
复制
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,...)我得到了预期的结果。这是聚合嵌套文档的限制吗?我应该以平面格式和当前嵌套格式将数据存储两次吗?

EN

回答 1

Stack Overflow用户

发布于 2014-07-21 15:46:19

不不是这样的。您可以使用nested types实现所需的功能。嵌套类型将使您的嵌套数据单独处理,并获得预期的结果。

试试这个要点:https://gist.github.com/vaidik/051a197654fe4b0ecc80

还有read this article about relationships。我认为你可以用Parent/ think文档来实现同样的效果,但我并没有太多地使用它们。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24631409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档