目前,我正在与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"
}
}
}
}
是否可以在可以分页的列表中返回按用法排序的所有标签?或者这对于嵌套对象来说根本不可能吗?
我很高兴任何正确方向的提示!
修改 或者以正确的方式使用父/子关系?