在弹性搜索中自动合并/汇总数据
Automatically merge / rollup data in elastic search
有没有一种简单的方法可以从另一个索引的聚合结果中创建一个新索引(也许合并 em)。
我有一个包含相似产品的大型索引。他们有一个产品 ID 来标识哪些产品属于一起,但他们有不同的 URL / 价格和不同的标题(我想在合并中以某种方式保留以便我可以搜索它)。
因此,如果我输入 8 个产品线,我希望将它们全部汇总到 1 个产品中,并使用具有相似产品数据的嵌套数组。
我在下面的作业中尝试了汇总 API。但我无法按照我想要的方式进行,我觉得这仅适用于历史/日志数据。我的所有数据都相同 timestamp
,因为我每天早上都会更新所有这些数据。
PUT _xpack/rollup/job/product
{
"index_pattern": "products",
"rollup_index": "products_rollup",
"cron": "*/30 * * * * ?",
"page_size": 1000,
"groups": {
"date_histogram": {
"field": "timestamp",
"interval": "7d"
},
"terms": {
"fields": [
"product_id"
]
}
},
"metrics": [
{
"field": "total_price",
"metrics": [
"min",
"max",
"sum"
]
}
]
}
谢谢!
目前rollupAPI主要是为了及时汇总数值数据。不合并文档。在您的情况下,我将在应用程序级别合并文档,并在 nested object
.
中获得一个带有 "subdocuments" 的文档
有没有一种简单的方法可以从另一个索引的聚合结果中创建一个新索引(也许合并 em)。
我有一个包含相似产品的大型索引。他们有一个产品 ID 来标识哪些产品属于一起,但他们有不同的 URL / 价格和不同的标题(我想在合并中以某种方式保留以便我可以搜索它)。
因此,如果我输入 8 个产品线,我希望将它们全部汇总到 1 个产品中,并使用具有相似产品数据的嵌套数组。
我在下面的作业中尝试了汇总 API。但我无法按照我想要的方式进行,我觉得这仅适用于历史/日志数据。我的所有数据都相同 timestamp
,因为我每天早上都会更新所有这些数据。
PUT _xpack/rollup/job/product
{
"index_pattern": "products",
"rollup_index": "products_rollup",
"cron": "*/30 * * * * ?",
"page_size": 1000,
"groups": {
"date_histogram": {
"field": "timestamp",
"interval": "7d"
},
"terms": {
"fields": [
"product_id"
]
}
},
"metrics": [
{
"field": "total_price",
"metrics": [
"min",
"max",
"sum"
]
}
]
}
谢谢!
目前rollupAPI主要是为了及时汇总数值数据。不合并文档。在您的情况下,我将在应用程序级别合并文档,并在 nested object
.