gpt4 book ai didi

elasticsearch - elasticsearch将嵌套对象的元素重新索引为关键字

转载 作者:行者123 更新时间:2023-12-02 22:56:18 26 4
gpt4 key购买 nike

我有一个结构如下的索引:

"my_index": {
"mappings": {
"my_index": {
"properties": {
"adId": {
"type": "keyword"
},
"name": {
"type": "keyword"
},
"title": {
"type": "keyword"
},
"creativeStatistics": {
"type": "nested",
"properties": {
"clicks": {
"type": "long"
},
"creativeId": {
"type": "keyword"
}
}
}
}
}
}
}

我需要在新索引中删除嵌套对象,然后将creativeId保存为新关键字(清楚地说:我知道我会丢失 clicks数据,这并不重要)。这意味着最终的新索引方案将是:
"my_new_index": {
"mappings": {
"my_new_index": {
"properties": {
"adId": {
"type": "keyword"
},
"name": {
"type": "keyword"
},
"title": {
"type": "keyword"
},
"creativeId": {
"type": "keyword"
}
}
}
}
}

现在,每一行都只有一个creativeStatistics。 ,因此选择 creativeId之一并不复杂。

我知道可以使用 painless脚本重新编制索引,但是我不知道该怎么做。任何帮助将不胜感激。

最佳答案

您可以这样做:

POST _reindex
{
"source": {
"index": "my_old_index"
},
"dest": {
"index": "my_new_index"
},
"script": {
"source": "if (ctx._source.creativeStatistics != null && ctx._source.creativeStatistics.size() > 0) {ctx._source.creativeId = ctx._source.creativeStatistics[0].creativeId; ctx._source.remove('creativeStatistics')}",
"lang": "painless"
}
}

关于elasticsearch - elasticsearch将嵌套对象的元素重新索引为关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53456470/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com