当前位置: 首页 > 知识库问答 >
问题:

如何使elasticsearch将时间戳字段添加到所有索引中的每个文档?

璩和璧
2023-03-14

Elasticsearch专家,

我一直无法找到一种简单的方法来告诉ElasticSearch为添加到所有索引(和所有文档类型)中的所有文档插入_timestamp字段。

我看到了特定类型的示例:http://www.elasticsearch.org/guide/reference/mapping/timestamp-field/

还可以查看特定类型的所有索引的示例(使用_all):http://www.elasticsearch.org/guide/reference/api/admin-indices-put-mapping/

但是我无法找到任何默认情况下添加的所有文档的任何留档,无论索引和类型如何。

共有3个答案

孔山
2023-03-14

添加另一种获取索引时间戳的方法。希望这可以帮助某人。

在索引文档时,可以使用摄取管道添加时间戳。这里是一个示例:

PUT _ingest/pipeline/indexed_at
{
  "description": "Adds indexed_at timestamp to documents",
  "processors": [
    {
      "set": {
        "field": "_source.indexed_at",
        "value": "{{_ingest.timestamp}}"
      }
    }
  ]
}

之前,弹性搜索使用命名管道,因为需要在用于编写/索引文档的弹性搜索endpoint中指定“管道”参数。(参考:link)这有点麻烦,因为您需要在应用程序端的endpoint中进行更改。

使用弹性搜索版本

这是要设置的默认管道:

PUT ms-test/_settings
{
  "index.default_pipeline": "indexed_at"
}

我还没有试过,因为没有升级到ES 6.5,但上面的命令应该可以工作。

高溪叠
2023-03-14

您可以通过在创建索引时提供它来做到这一点。

$curl -XPOST localhost:9200/test -d '{
"settings" : {
    "number_of_shards" : 1
},
"mappings" : {
    "_default_":{
        "_timestamp" : {
            "enabled" : true,
            "store" : true
        }
    }
  }
}'

这将自动为您放入索引中的所有内容创建一个_timestamp。然后在请求_timestamp字段时索引某些内容后,它将被返回。

公西运良
2023-03-14

Elasticsearch用于支持自动向被索引的文档添加时间戳,但在2.0.0中弃用了此功能

从版本5.5留档:

_timestamp和_ttl字段已被弃用,现在已被删除。作为_timestamp的替代,您应该在应用程序端使用当前时间戳填充常规日期字段。

 类似资料:
  • Elasticsearch专家, 我一直无法找到一种简单的方法来告诉ElasticSearch为添加到所有索引(和所有文档类型)中的所有文档插入_timestamp字段。 我看到了特定类型的示例:http://www.elasticsearch.org/guide/reference/mapping/timestamp-field/ 还可以查看特定类型的所有索引的示例(使用_all):http:/

  • 问题内容: 我需要为索引中的所有文档添加一个新字段,而无需下拉文档并将其推回备份(这将需要大约一天的时间)。是否可以使用_BULK API实现此目的? 我还研究了update_by_query插件,似乎只需要将它们拉下并推回自己的位置即可。 问题答案: 是的,批量API支持更新,可以使用部分文档或脚本添加新字段。要遍历文档ID,请执行扫描并在将fields参数设置为空数组的情况下滚动。

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

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

  • 问题内容: 我想在我存储在Elasticsearch 7.3中的文档中搜索单词 我想要在以前版本的Elasticsearch上工作的示例是: 但是此查询不适用于Elasticsearch 7+,因为已删除。现在该字段消失了,我该如何编写查询以完成相同的任务? 注意:我已经阅读了将所有字段复制到自定义字段中的建议,但是这要求显式地写出每个字段以包括在all_fields字段中。由于我有很多小字段,因

  • 问题内容: 我有两个索引和。在这些索引中,我具有以下文档类型: : 人 组织机构 角色 技能 : 产品展示 服务 专利 商标 服务标记 每种类型都有不同的字段。 我的问题: 在任何类型的任何字段中,跨一个或什至两个索引查询字符串“ abc”的最佳方法是什么? 我没有在文档中找到任何有助于这种搜索的内容。是否有可能看起来像: 预先感谢您提供的任何帮助。 问题答案: 无论是查询或查询将是你在找什么。