只查找数组中最年轻的元素

时间:2013-07-12 10:26:00

标签: elasticsearch

有人知道是否有办法构建一个弹性搜索查询,按日期对数组进行排序并仅查询最年轻的项目?为了证明我的意思,这是我的数据的一个例子:

    [{
    _id: "51cd3ae45b99bd960ee0b425",
    name: "Example entry",
    documents: [
        {
            title: "Document Title 1",
            subDocuments: [
                {
                    date: "Mon Jul 08 2013 12:14:04 GMT+0200 (CEST)",
                    title: "start working"
                },
                {
                    date: "Fri Jul 11 2013 12:14:04 GMT+0200 (CEST)",
                    title: "finished"
                },
                {
                    date: "Thu Jul 10 2013 12:14:04 GMT+0200 (CEST)",
                    title: "working"
                }
            ]
        }
    ]
}, {
    _id: "51cd3ae45b99bd960ee0b426",
    name: "Example entry 2",
    documents: [
        {
            title: "Document Title 1",
            subDocuments: [
                {
                    date: "Mon Jul 08 2013 12:14:04 GMT+0200 (CEST)",
                    title: "start working"
                },
                {
                    date: "Fri Jul 11 2013 12:14:04 GMT+0200 (CEST)",
                    title: "working"
                }
            ]
        }
    ]
}]

在这个数据中,我想查询值“working”。正如您所看到的,第一个文档的子文档标题已在其上一个状态中完成,因此不允许在结果集中使用此文档。

有人可以给我一个提示如何构建查询以满足我的要求吗?或者这是不可能的,并且必须在客户端代码中开发?

谢谢和问候克尔斯滕

1 个答案:

答案 0 :(得分:0)

我通过编辑我的数据来管理这个问题。我只是将最后一个状态复制到自己的属性。但我认为这可能是解决方案:https://github.com/elasticsearch/elasticsearch/issues/3022