重建索引和别名——避免重复的搜索结果
Reindex and alias - avoid duplicate search results
我使用一个别名进行搜索,其中一个索引 index_1
,is_write_index
设置为 true
。由于映射更改,我需要重新索引,这是我的索引过程。
- 使用新映射
创建新索引index_2
- 重新索引
index_1
到 index_2
- 将
index_1
中使用的别名添加到 index_2
,其中 is_write_index
设置为 true
for index_2
- 重新索引
index_1
到 index_2
以同步最新更改
- 删除
index_1
我遇到的问题是,从第 3 步开始,对别名的查询返回重复结果。如何避免这个问题?
找到答案,我找到的短期解决方案是在设置别名时使用过滤器来过滤掉来自 index_2 的重复结果。例如。
POST /_aliases
{
"actions": [
{
"add": {
"index": "index_1",
"alias": "aliasName",
"is_write_index": true
}
},
{
"add": {
"index": "index_2",
"alias": "aliasName",
"filter": {
"term": {
"myGuaranteedToExistField": "impossibleToFindValue"
}
}
}
}
]
}
索引完成并验证后,我可以翻转索引。虽然不确定这是否是最佳解决方案,但它确实有效。
我使用一个别名进行搜索,其中一个索引 index_1
,is_write_index
设置为 true
。由于映射更改,我需要重新索引,这是我的索引过程。
- 使用新映射 创建新索引
- 重新索引
index_1
到index_2
- 将
index_1
中使用的别名添加到index_2
,其中is_write_index
设置为true
forindex_2
- 重新索引
index_1
到index_2
以同步最新更改 - 删除
index_1
index_2
我遇到的问题是,从第 3 步开始,对别名的查询返回重复结果。如何避免这个问题?
找到答案,我找到的短期解决方案是在设置别名时使用过滤器来过滤掉来自 index_2 的重复结果。例如。
POST /_aliases
{
"actions": [
{
"add": {
"index": "index_1",
"alias": "aliasName",
"is_write_index": true
}
},
{
"add": {
"index": "index_2",
"alias": "aliasName",
"filter": {
"term": {
"myGuaranteedToExistField": "impossibleToFindValue"
}
}
}
}
]
}
索引完成并验证后,我可以翻转索引。虽然不确定这是否是最佳解决方案,但它确实有效。