Elasticsearch比较两个索引

时间:2014-12-15 19:38:22

标签: elasticsearch

我有两个不同的索引 - index1和index2 在index1中,我有一些ID匹配index2的文件(不要问它是这样做的原因,但重点是这样)。因此ID数量和值必须在index1和index2中匹配。 有时我在其中一个表中缺少ID ...所以问题是: 有没有办法比较index1和index2的ID?例如,我可以计算两个索引中的记录数量和数量,如果它们不匹配,可以将Index1中每个文档的ID与Index2中的ID进行比较(检查它是否存在),但它会非常慢,所以我正在寻找更简单的解决方案:)

任何想法都将受到赞赏!

4 个答案:

答案 0 :(得分:1)

查找仅存在于其中一个索引中的文档的一个想法可能是将两个索引重新索引到新的第三个索引中,然后在该索引中搜索具有版本>的文档。 1。

答案 1 :(得分:0)

你可以添加一个新的bool字段" in_index2"到index1并计算bool字段。

我不喜欢这个解决方案,但它应该有效。

答案 2 :(得分:0)

我也在努力解决这个问题 - 你会认为这很容易。我的想法是

  1. 添加一个属性以跟踪上次找到该项目的时间 - 比如FoundState
  2. 扫描更新index1类型x,将FoundState设置为NotFound
  3. 当你填充新的index2时,index1中的匹配id显示它在新索引(FoundState Found)中找到。你甚至可以更新显示它是否被发现的新项目。
  4. 然后你可以在index2上筛选新项目或找到的项目,并且可以根据缺少项目的FoundState过滤index1

    更新第一个索引中的项目的额外工作是一种痛苦,但这是我能够看到的唯一方法

答案 3 :(得分:0)

我通过使用*语法

完成了此任务
  • 索引1:“ foo-bar”
  • 索引2:“ foo-baz”
  • 等最后
  • 比较指数:“ foo-*”