使用ElasticSearch实现标签(v1.5.2)

时间:2016-06-13 16:30:18

标签: elasticsearch pagination tags nested

目前,我正在与ElasticSearch合作索引和查询数百万份文档。现在我想将标签合并到这些文件中。而且我不太确定,最好的方法是满足我的要求,即:

我想查询ES最常用的标签。也应该可以进行分页和过滤。

这甚至可能吗?我之前尝试过使用聚合,但它有点工作,但我无法对结果进行分页或过滤。

{
    size: 0,
    aggs: {
        group_by_tags: {
            terms: {
                field: "tags"
            }
        }
    }
}

所以,我认为使用嵌套对象将是一种方式,我已经改变了映射,现在看起来像这样:

mappings: {
    shop_outfits: {
        _all: {
            enabled: false
        },
        properties: {
            id: {
                type: "string",
                index: "not_analyzed"
            },
            userId: {
                type: "string",
                index: "not_analyzed"
            },
            title: {
                type: "string"
            },
            description: {
                type: "string"
            },
            tags: {
                type: "nested",
                properties: {
                    tag: {
                        type: "string",
                        index: "not_analyzed"
                    }
                }
            },
            articles: {
                type: "string",
                index: "not_analyzed"
            },
            uniqueId: {
                type: "string",
                index: "not_analyzed"
            },
            createdAt: {
                type: "date",
                format: "yyyy-MM-dd HH:mm:ss"
            }
        }
    }
}

是否可以在可以分页的列表中返回按用法排序的所有标签?或者这对于嵌套对象来说根本不可能吗?

我很高兴任何正确方向的提示!

修改 或者以正确的方式使用父/子关系?

0 个答案:

没有答案