首页 > 解决方案 > 重新索引和别名 - 避免重复的搜索结果

问题描述

我正在使用一个别名进行搜索,其中一个索引index_1设置is_write_indextrue. 由于映射更改,我需要重新索引,这是我的索引过程。

  1. index_2使用新映射创建新索引
  2. 重新索引index_1index_2
  3. 添加用于index_1to的别名index_2is_write_index设置为trueforindex_2
  4. 重新索引index_1index_2同步最新更改
  5. 删除index_1

我遇到的问题是,从第 3 步开始,对别名的查询返回重复的结果。如何避免这个问题?

标签: elasticsearchaliasreindex

解决方案


找到了答案,我找到的短期解决方案是在设置别名时使用过滤器来过滤掉 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"
          }
        }
      }
    }
  ]
}

完成索引并验证事情后,我可以翻转索引。不确定这是否是最好的解决方案,但它确实有效。


推荐阅读