保持elasticsearch与密钥或版本控制同步

时间:2015-04-23 13:42:50

标签: search elasticsearch lucene

所以我遇到了很多大型XML文件的情况,我希望这些数据能够在elasticsearch上实现。

当前方式

  • 拥有index_1
  • 更新数据时,请创建空白index_2
  • 将所有最新数据加载到index_2
  • 别名为index_2并删除index_1

建议方式

  • 拥有一个与elasticsearch
  • 同步的synced.xml文件
  • 与synced.xml比较时,可以使用新的timedated xml文件
  • 如果时间日期xml文件中有任何新内容,请将其添加到ES
  • 将timedated xml重命名为synced.xml

这意味着在500,000个项目中,我只需添加5,000个已更改的项目,例如,不重复500,000个项目。

问题

在这样的场景中,如何确保它们是同步的?例如,如果弹性搜索被擦除会发生什么,我怎么能告诉我的程序它需要再次添加整个批次。有没有办法在弹性搜索上使用某种sycronisation键,或者可能是更好的方法?

1 个答案:

答案 0 :(得分:1)

这是我推荐的......

  1. 将存储的字段添加到您的类型中以存储类似MD5

  2. 的哈希值
  3. 使用“扫描/滚动”从ES

  4. 导出ID和哈希
  5. 在您的支持数据集导出ID和哈希

  6. 使用类似MapReduce之类的东西来“加入”各自的导出ID 组

  7. 通过比较散列或发现存在差异 缺少密钥,索引/更新

  8. 哈希仅在想要检测文档更改时才有用。这也假设您将ES的ID保留在后备存储中,或者您自己分配ID。