Easysearch、Elasticsearch 还是 Opensearch,是个问题

reindex问题

匿名 | 发布于2017年04月17日 | 阅读数:4914


POST _reindex { "source": { "index": "twitter" }, "dest": { "index": "new_twitter", "version_type": "internal" } }
 

POST _reindex { "source": { "index": "twitter" }, "dest": { "index": "new_twitter", "version_type": "external" } }
 
 

POST _reindex { "source": { "index": "twitter" }, "dest": { "index": "new_twitter", "op_type": "create" } }
 
 
version_type 的internal 与 external区别  能不能说个实际运用的现象。"op_type": "create" 这个到底是什么意思 
 
已邀请:

kennywu76 - Wood

赞同来自: hailang

这里的internal, external都是从dest的视角看过去的,internal表示使用dest内部版本, external表示使用source的版本。 
 
假设source有3条文档:
id: 1   text: "a"  version: 4
id: 2   text: "b"  version: 3
id: 3   text: "c"  version: 2

dest有2条文档:
id: 1   text: "e"  version: 1
id: 2   text: "f"  version: 5


如果将source reindex到dest,文档1和2会产生冲突。

使用不同的version type做reindex,dest里的文档内容和版本变化的结果如下:
version type = internal
id: 1   text: "a"  version: 2    # 覆盖 & 内部版本号+1
id: 2   text: "b"  version: 6    # 覆盖 & 内部版本号+1
id: 3   text: "c"  version: 1    # 新文档,创建,版本号为1


version type = external:
id: 1   text: "a"  version: 4    # 外部版本号> 内部,因此覆盖文档 & 保留外部版本号4
id: 2   text: "f"  version: 5    # 外部版本号小于内部,版本冲突,保留文档和内部版本号5
id: 3   text: "c"  version: 2    # 新文档,创建,并保留外部版本号2


op_type = create:
id: 1   text: "e"  version: 1    # dest已有文档忽略不处理
id: 2   text: "f"  version: 5    # dest已有文档忽略不处理
id: 3   text: "c"  version: 1    # dest没有此文档,新创建(create),版本号为1
 
 
范例如有问题,欢迎指正。

hailang

赞同来自:

总结:内部就是source全覆盖,版本如果覆盖dest的版本+1,如果没有看dest的版本号。外部就是谁版本大看谁,没有就新建为1!!

要回复问题请先登录注册