在查询时展平elasticsearch中的嵌套对象列表以支持排序?

2ekbmq32  于 2021-06-15  发布在  ElasticSearch
关注(0)|答案(0)|浏览(357)

下面是一个简化的问题示例:

[
    {
        "key": 1
    },
    {
        "key": 2
    },
    {
        "key": 3,
        "children": [
            {
                "key": 9
            },
            {
                "key": 6
            }
        ]
    },
    {
        "key": 5
    }
]

如果您想在这里按键排序--elasticsearch将返回

[
    {
        "key": 1
    },
    {
        "key": 2
    },
    {
        "key": 3,
        "children": [
            {
                "key": 6
            },
            {
                "key": 9
            }
        ]
    },

    {
        "key": 9
    },
    {
        "key": 6
    },
    {
        "key": 5
    }
]

预期结果:

[
    {
        "key": 1
    },
    {
        "key": 2
    },
    {
        "key": 3
    },
    {
        "key": 5
    },
    {
        "key": 6
    },
    {
        "key": 9
    }
]

我们的Map没什么特别的。
这可能吗?我们需要更新Map吗?我还没有找到将嵌套对象“展平”到顶级hits数组中然后排序的方法。
我想我们要么创建另一个索引,将子对象Map到当前索引中的父对象,然后以某种方式查询这两个对象。。。或者在响应返回后将服务器端扁平化。后者的唯一问题是用户可以选择多个字段进行排序(es可以快速地为我们处理,并希望保持这种方式)。

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题