", "list": [ "a", "b", "c" ] } { "id"-6ren">
gpt4 book ai didi

数组索引或替代解决方案上的 Elasticsearch 聚合

转载 作者:行者123 更新时间:2023-12-03 02:16:30 30 4
gpt4 key购买 nike

我在 elasticsearch 中有一些类似于这些示例的文档:

{
"id": "<<some id>>",
"list": [
"a",
"b",
"c"
]
}
{
"id": "<<some id>>",
"list": [
"c",
"a"
]
}
list可以包含 a , bc以任何顺序,不一定是所有顺序。 list 中元素的顺序很重要。
我想运行这些桶聚合:
  • 有多少文档包含 a在任何位置
  • 有多少文档包含a第一个 位置

  • 当前的文档结构是否可行?我可以用不同的方式构建文档吗?
    如果当前结构不可能,我想有类似的东西:
    {
    "id": "<<some id>>",
    "list": {
    "values": ["c", "a"],
    "ordered": {
    "0": "c",
    "1": "a"
    }
    }
    }
    或者
    {
    "id": "<<some id>>",
    "list": {
    "values": ["c", "a"],
    "ordered": {
    "a": 1,
    "c": 0
    }
    }
    }
    使用后者,我还可以像 a < c 那样运行聚合。等等。
    感谢您的帮助

    最佳答案

    可能有更好的方法可用,但如果你可以像位置一样存储它,然后是你的键:

    {
    "id": "<<some id>>",
    "list": [
    "1_a",
    "2_b",
    "3_c"
    ]
    }
    另一个医生,
    {
    "id": "<<some id>>",
    "list": [
    "1_c",
    "2_a"
    ]
    }
    然后你可以在它上面运行正常的聚合,它会返回如下内容:
    1_a:1
    2_a:1 ... etc
    此后在处理时您需要按 _ 拆分否则你可以玩弄脚本。

    关于数组索引或替代解决方案上的 Elasticsearch 聚合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63483369/

    30 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com