elasticsearch - 在Elasticsearch中过滤折叠的结果

标签 elasticsearch

我有一个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/

    相关文章:

    c# - Boosting使用Elastic/NEST开始并包含搜索

    elasticsearch - 关于查询速度的Elasticsearch分片基础

    ElasticSearch:存在模板时将文档插入 ElasticSearch 索引的奇怪问题

    geolocation - Elasticsearch 结果中的返回距离?

    即使我使用 "loading:eager",Elasticsearch 第一个查询也很慢

    python - elasticsearch-py 扫描并滚动返回所有文档

    elasticsearch - 如何将系统日志日期格式化为Logstash日期时间戳格式

    elasticsearch - 在 ElasticSearch 中省略默认的 Logstash 字段

    python - 如何使用elasticsearch的SimpleQueryString功能?

    c# - Elasticsearch无法搜索字符串字段