当前位置: 首页 > 面试题库 >

在ElasticSearch中返回时间戳字段

钦英发
2023-03-14
问题内容

为什么在能够过滤查询时无法看到_timestamp字段?

以下查询返回正确的文档,但不会返回时间戳本身。如何返回时间戳?

{
  "fields": [
    "_timestamp",
    "_source"
  ],
  "query": {
    "filtered": {
      "query": {
        "match_all": {}
      },
      "filter": {
        "range": {
          "_timestamp": {
            "from": "2013-01-01"
          }
        }
      }
    }
  }
}

映射为:

{
    "my_doctype": {
        "_timestamp": {
            "enabled": "true"
        },
        "properties": {
            "cards": {
                "type": "integer"
            }
        }
    }
}

样本输出:

{
  "took" : 1,
  "timed_out" : false,
  "_shards" : {
    "total" : 1,
    "successful" : 1,
    "failed" : 0
  },
  "hits" : {
    "total" : 2,
    "max_score" : 1.0,
    "hits" : [ {
      "_index" : "test1",
      "_type" : "doctype1",
      "_id" : "HjfryYQEQL6RkEX3VOiBHQ",
      "_score" : 1.0, "_source" : {"cards": "5"}
    }, {
      "_index" : "test1",
      "_type" : "doctype1",
      "_id" : "sDyHcT1BTMatjmUS0NSoEg",
      "_score" : 1.0, "_source" : {"cards": "2"}
    }]
  }

问题答案:

启用时间戳字段后,默认情况下会对其进行索引但不存储。因此,尽管您可以通过时间戳字段进行搜索和过滤,但是您无法轻松地通过记录来检索它。为了能够检索时间戳字段,您需要使用以下映射重新创建索引:

{
    "my_doctype": {
        "_timestamp": {
            "enabled": "true",
            "store": "yes"
        },
        "properties": {
            ...
        }
    }
}

这样,您将能够检索到时间戳记以来的毫秒数。



 类似资料:
  • 我想在elasticsearch中组织我的数据并使用kibana可视化它。我使用elasticsearch 1.4.4和Kibana3。 我所有数据的elasticsearch是,我有两种文档类型和。我在开始时运行下面的脚本,并期望格式的时间戳字段,值为文档的插入时间。我的理解是每个文档都有一个时间戳字段。我在kibana中看不到这个字段。Kibana说但是我似乎无法将其设置为仪表板的时间戳。我在

  • 问题内容: 我必须索引包含“时间”字段的文档,该字段的值是一个整数,表示自纪元以来的秒数(又称为Unix时间戳)。 我一直在阅读ES文档,发现了这一点: http://www.elasticsearch.org/guide/reference/mapping/date- format.html 但是似乎如果我要提交unix时间戳并将其存储在“日期”字段中(整数字段对我没有用),我只有两个选择: 实

  • 我正在用Grafana测试从石墨系统读取和绘制数据。 这就是Grafana对Graphite中json数据的期望: 我想从其中读取数据的系统交换时间戳和度量值,例如。

  • 我有两个相隔65秒的unix时间戳,我试图以这种方式查询mysql 在FROM_UNIXTIME(1504684252)和FROM_UNIXTIME(1504684317)之间选择ask FROM live_rates WHERE 在我的表中,有一个事件从时间戳开始,65秒后结束。为什么这两个查询都没有返回数据?。

  • 问题内容: 我只想检查是否返回UTC / GMT时间戳,还是需要使用? 问题答案: 返回UNIX时间戳,该时间戳与时区无关。由于UNIX时间戳表示自1970年 UTC 以来的秒数,您可以说它是UTC,但实际上没有时区。 实际上,UNIX时间戳在任何给定时间在全世界范围内都是相同的值。在撰写本文时,它在东京,伦敦和纽约。要将其转换为“人类可读”的时间,您需要指定要显示的时区。在东京是,在伦敦是在纽约

  • 问题内容: 我在ES 1.5.2中工作。我有一个包含文档的索引,并带有存储的时间戳值。我想向其中添加一个常规字段,该字段将采用该文档的_timestamp字段的值。我怎样才能做到这一点?我可以 创建一个常规字段,但是如何将所有_timestamp值复制到该字段? 问题答案: 在ES 1.5.2中,可以使用按查询更新插件来重新索引文档并将该字段复制到常规字段。 使用以下命令安装插件后: 并且确保在配