【问题标题】:How to add only new docs or changed docs on elasticsearch?如何在 elasticsearch 上仅添加新文档或更改的文档?
【发布时间】:2020-08-25 23:07:44
【问题描述】:

场景:脚本从外部 API 拉取数据,将结果格式化为字典/json 对象,然后将数据推送到 elasticsearch。该脚本计划定期运行。

条件:脚本应该只推送elasticsearch中不存在的记录的字典。对于 elasticsearch 中存在的记录,如果有任何数据发生更改,请更新字段。

我的方法: API 中的记录有一个 ID,我使用该 ID 通过搜索查询来检查它们是否存在于 elasticsearch 中。我将elasticsearch中不存在的ID列一个列表,并将对应的记录推送到elasticsearch。

问题:例如,如果 {'ID':1, 'Status':'Started'} 的记录昨天被推送到 elasticsearch。现在数据已更改为 {'ID':1, 'Status':'Completed'} 它仍然会被忽略,因为我只检查 ID。

我正在考虑的解决方案: 通过比较 json 对象/字典的所有字段插入到 elasticsearch。如果一切都匹配,请跳过插入。如果任何字段具有不同的值,请插入弹性搜索 [同一记录具有多个文档的冗余不是问题。需要避免为具有所有相同值的同一记录提供多个文档的冗余。]

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    您可以将文档 ID 传递给index method。如果记录不存在,这将插入该记录,否则它将更新任何不同的字段。这样您就无需添加自定义逻辑来将该 ID 作为常规字段进行管理。

    【讨论】:

      猜你喜欢
      • 2018-01-31
      • 1970-01-01
      • 2023-03-17
      • 1970-01-01
      • 2019-10-13
      • 1970-01-01
      • 2019-12-31
      • 2020-01-20
      • 1970-01-01
      相关资源
      最近更新 更多