Elasticsearch重新索引则无法添加映射



嗨,Elasticsearch专家!想知道是否有人能帮助处理正在发生的奇怪事情:我们有一个索引,其中映射的数量已经大量增长(超过3000(,我们希望通过重新索引来减少这一数量。在新的索引中,我们将关闭动态映射,只添加要用于搜索的映射。所以,我创建了一个新的索引:

PUT /newindex-2021.01/_mapping
{
"dynamic": "false",
"date_detection": true,
"properties": {
"timestamp": {
"type": "date"
}
}
}

然后我重新索引:

POST _reindex?wait_for_completion=false
{
"source": {
"index": "oldindex-2021.01"
},
"dest": {
"index": "newindex-2021.01"
}
}

然后我想为事件字段添加一个映射,以测试一切是否正常,所以我运行了:

PUT /*newindex*/_mapping
{
"properties": {
"event": {
"type": "text"
}
}
}

为了安全起见,我还运行了(不确定这是否有任何影响(:

PUT /newindex-2021.0/_mapping
{
"properties": {
"event": {
"type": "text"
}
}
}

当我导航到发现页面时,它现在显示事件字段的放大镜(表示我可以在创建映射时只搜索事件(。但是,当我单击它时,不会显示任何结果(就好像没有文档具有字段event==值,尽管它确实存在(有什么东西我遗漏了吗?我只是想添加一个映射到一个空索引。。谢谢你的帮助!

您无法更改已编制索引的文档的映射(事实上,这正是您正确重新编制原始索引的原因(。重新索引后,您所做的是向一个没有任何映射的字段添加一个新映射,使其从现在起可以查询——即,仅针对新文档,而不是追溯到现有文档。

您需要使用已经包含您要查找的字段映射的映射重新索引到索引。

最新更新