在Elasticsearch中按日期之间的时差查询

时间:2018-11-12 06:30:26

标签: elasticsearch

说我有这样的索引:

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

如何查询起始地址大于10的文档?现在开始<60000

1 个答案:

答案 0 :(得分:1)

就像这样:

{
  "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
      }
    }
  }
}