【发布时间】: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