我有一个弹性搜索索引,其中包含表示给定时间点实体的文档。当实体更改状态时,会创建带有时间戳的新文档。当我需要获取所有实体的当前状态时,我可以执行以下操作:
GET https://127.0.0.1:9200/myindex/_search
{
"collapse": {
"field": "entity_id"
},
"sort" : [{
"timestamp": {
"order": "desc"
}
}]
}
不过,我想进一步过滤崩溃的结果。删除实体时,我创建一个新文档,其中包含 is_deleted 标志以及嵌套元数据字段中的时间戳。我想扩展上述查询以完全过滤掉那些已删除的实体。使用术语过滤器entity_metadata.is_deleted: true
显然不起作用,因为这样我的结果只包含带有该entity_id的最后一个文档,然后它被标记为已删除。我如何过滤我的结果after崩溃是为了排除任何墓碑实体吗?
我建议的是,不要添加is_deleted
向所有人标记entity_id
文件,你可以添加一个date_deleted
字段包含删除该实体的所有文档的日期,然后当您查看文档时,给出其日期和deleted_date
您会知道该文档在该日期是处于活动状态还是已被删除。
此外,它还可以让您考虑:
- 所有没有
deleted_date
字段(即未删除)和
- 所有具有
deleted_date
给定日期之前/之后。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)