小编JHI*_*EDE的帖子

内部对象之间的 Elasticsearch 查询时间戳差异

我有一个嵌套的数据类型,我想在它们的内部对象中进行计算,如果它们满足两个内部对象中的条件,我基本上希望我的搜索返回命中,棘手的条件是检索它们各自的时间戳值作为查询并使用它们来生成命中给定它们之间所需的时间差。

以这个单一文件为例:

{
  "messages": [
    [
      {
        "message": "First message",
        "timeStamp": "0:00:00"
      },
      {
        "message": "Second message",
        "timeStamp": "0:10:00"
      },
      {
        "message": "Third message",
        "timeStamp": "0:15:00"
      },
      {
        "message": "Fourth message",
        "timeStamp": "0:30:00"
      },
      {
        "message": "Fifth message",
        "timeStamp": "1:00:00"
      }
    ]
  ]
}
Run Code Online (Sandbox Code Playgroud)

如果消息包含文本Second并且在彼此Third相隔5 分钟内找到不同内部对象上的文本,我希望返回我的命中。如果我将它们的时间戳直接添加为查询的一部分,我可以轻松实现此查询,但此查询必须针对不同的时间戳数据运行。

{
  "query": {
    "bool": {
      "filter": [
        {
          "bool": {
            "must": [
              {
                "nested": {
                  "path": "messages",
                  "query": {
                    "bool": {
                      "must": [
                        {
                          "match": {
                            "messages.message": "Second" …
Run Code Online (Sandbox Code Playgroud)

subquery elasticsearch elasticsearch-dsl

5
推荐指数
0
解决办法
74
查看次数