【问题标题】:Ways to only process new(index after last run) data in Elasticsearch?仅在 Elasticsearch 中处理新(上次运行后的索引)数据的方法?
【发布时间】:2017-12-18 14:26:29
【问题描述】:

有没有办法获取编写弹性搜索文档的日期和时间?

我正在通过 spark 运行 es 查询,并且希望 NOT 查看我已经处理过的所有文档。相反,我想阅读在程序上次运行和现在之间摄取的唯一文档。

最有效的方法是什么?

我看过;

  • 更新 以添加一个带有布尔数组的字段,以判断它是否被哪个分析器查看。否定是等待更新发生。
  • index per time frame 方法,即按小时将当前索引分解为较小的索引。我看到的负数是打开文件描述符的数量。
  • ??

Elasticsearch 5.6 版

【问题讨论】:

  • 为您的文档添加一个计数器,并在您每次“处理”该文档时增加该计数器。曾经有一个_timestamp,但在 5.x 中被删除。但是那个时间戳仍然不是文档被索引到 ES 中的确切时间;-)。

标签: elasticsearch


【解决方案1】:

我在elasticsearch discussion board 上发布了这个问题,看来使用ingest pipeline 是最好的选择。

【讨论】:

    【解决方案2】:

    我正在通过 spark 运行 es 查询,并且不希望查看 我已经处理的所有文件。相反,我想阅读 在最后一次之间摄取的唯一文件 程序运行,现在。

    解决方法可能是:

    在使用 Logstash 向 Elasticsearch 插入数据时,Logstash 会在文档中附加一个 @timestamp 键,该键表示文档的创建时间(以 UTC 为单位)或我们可以使用 ingest pipline

    之后我们可以根据时间戳查询。

    更多内容请看:

    1. Mapping changes
    2. There is no way to ask ES to insert a timestamp at index time

    【讨论】:

      【解决方案3】:

      Elasticsearch 没有这样的功能。

      您需要手动保存每个文档的日期。在这种情况下,您将能够按日期范围进行搜索。

      【讨论】:

      • 所以你是说要添加一个字段来保存写入的日期/时间或 now()?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多