首页 > 解决方案 > 在elasticsearch中按日期之间的时差查询

问题描述

假设我有这样的索引:

{"id": "12345678", "start": 1541999620214, "end": 1541999620222 }

如何查询 end-start > 10 的文档?现在开始 < 60000

标签: elasticsearch

解决方案


就像这样:

{
  "query": {
    "script": {
      "script": {
        "source": "doc.end.value - doc.start.value < 10"
      }
    }
  }
}

{
  "query": {
    "script": {
      "script": {
        "source": "System.currentTimeMillis() - doc.start.value < 60000"
      }
    }
  }
}

但是,作为性能优化,您可以end - start在索引时将信息存储在文档中,这样您就不必求助于脚本,您的查询将简单地变成:

{
  "query": {
    "range": {
      "diff": {
        "lt": 10
      }
    }
  }
}

推荐阅读