我有一个Elasticsearch索引,其中包含表示给定时间点的实体的文档。当实体更改状态时,将创建带有时间戳的新文档。当需要获取所有实体的当前状态时,可以执行以下操作:
GET https://127.0.0.1:9200/myindex/_search
{
"collapse": {
"field": "entity_id"
},
"sort" : [{
"timestamp": {
"order": "desc"
}
}]
}
但是,我想进一步过滤崩溃的结果。删除实体后,我将在嵌套元数据字段中创建一个包含is_deleted标志以及时间戳的新文档。我想扩展以上查询以完全过滤掉那些已删除的实体。在
entity_metadata.is_deleted: true
上使用术语过滤器显然是行不通的,因为那样一来,我的结果将只包含带有该object_id的最后一个文档,然后将其标记为已删除。完成折叠以排除任何墓碑实体后,如何过滤结果?
最佳答案
我的建议是,除了向所有is_deleted
文档添加entity_id
标志之外,您还可以向该实体的所有文档中添加一个带有删除日期的date_deleted
字段,然后在查看文档时给定其日期和deleted_date
您会知道该文件当时是实时的还是已删除。
此外,它可以让您考虑:
deleted_date
字段(即未删除)和deleted_date
的所有文档。 关于elasticsearch - 在Elasticsearch中过滤折叠的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56710253/