我可以在聚合中使用_source字段吗?

时间:2017-02-11 19:32:22

标签: elasticsearch

我有一些包含许多字段的文档,我想查找在特定小时后插入的文档数,这可以通过使用范围查询来完成,但在所有文档字段中我想要显示唯一的时间戳字段。

我使用了以下查询

 {
      "_source": [
        "fields.Timestamp"
      ],
      "aggs": {
        "last_5_mins": {
          "filter": {
            "range": {
              "fields.Timestamp": {
                "gt": "2017-02-10T10:07:04.4367673Z"
              }
            }
          }
        }
      }
    }

当我看到输出时,我没有获得匹配文档的时间戳,而是获得了与我的查询不匹配的文档。

MY输出:

"hits": {
    "total": 6,
    "max_score": 1,
    "hits": [
      {
        "_index": "matrix",
        "_type": "neo",
        "_id": "5",
        "_score": 1,
        "_source": {

        }
      },
      {
        "_index": "matrix",
        "_type": "neo",
        "_id": "2",
        "_score": 1,
        "_source": {
          "fields": {
            "Timestamp": "2017-02-10T10:07:04.4367673Z"
          }
        }
      },
      {
        "_index": "matrix",
        "_type": "neo",
        "_id": "4",
        "_score": 1,
        "_source": {
          "fields": {
            "Timestamp": "2017-02-10T10:07:04.4836472Z"
          }
        }
      },
      {
        "_index": "matrix",
        "_type": "neo",
        "_id": "6",
        "_score": 1,
        "_source": {

        }
      },
      {
        "_index": "matrix",
        "_type": "neo",
        "_id": "1",
        "_score": 1,
        "_source": {
          "fields": {
            "Timestamp": "2017-02-10T10:07:04.4367673Z"
          }
        }
      },
      {
        "_index": "matrix",
        "_type": "neo",
        "_id": "3",
        "_score": 1,
        "_source": {
          "fields": {
            "Timestamp": "2017-02-10T10:07:12.1147415Z"
          }
        }
      }
    ]
  },
  "aggregations": {
    "last_5_mins": {
      "doc_count": 2
    }
  }
}

如何获取匹配文档的时间戳? 感谢..

1 个答案:

答案 0 :(得分:0)

您不需要使用聚合,只需在查询部分中移动range查询即可:

{
   "_source": [
      "fields.Timestamp"
   ],
   "query": {
      "bool": {
         "filter": {
            "range": {
               "fields.Timestamp": {
                  "gt": "2017-02-10T10:07:04.4367673Z"
               }
            }
         }
      }
   }
}