gpt4 book ai didi

php - 无法将 mysql 时间戳映射到elasticsearch

转载 作者:行者123 更新时间:2023-11-29 12:25:12 33 4
gpt4 key购买 nike

我想将我的 mysql 表之一插入到 elasticsearch 中以进行搜索,但我在将时间戳从 mysql 映射到 ES 时遇到问题。

在mysql中,我的时间戳看起来像“2015-01-01 15:30:34”,我尝试将其映射为“timestamp”/“int”/“long”,但没有任何效果。查看 ES 文档,看起来 ES 期望时间戳看起来像“2015-01-01T15:30:34”

其中有一个“T”。

我能否将普通的 mysql 时间戳映射为“2015-01-01 15:30:34”到 ES 中?

第二个问题:由于我在 MySql 中只有一张表想要被搜索,所以我在 ES 中只有该表。我这样做的方式是:每次在 MySql 中插入/更新/删除新行时,同一行会在 ES 中插入/更新/删除。这是正确的做法吗?为了保持索引实时更新。

我正在使用 Laravel 包:https://github.com/adamfairholm/Elasticquent

因为这是我为 ES 的新人找到的最简单的方法。

最佳答案

包含T的时间戳位于 ISO 8601格式。由于 Laravel 使用 Carbon您可以使用它将字符串转换为 ISO 8601,如下所示:

$myDateTime->toIso8601String();

关于你的第二个问题,你的方法很好。通过将 MySQL 插入、更新和删除操作与 ES 同步,您可以确保 ES 索引近乎实时地保持最新。

如果对 ES 文档进行实时重新索引结果对性能不利(通常如果您频繁插入、更新和删除),您可以设置一个 cron 来以给定的时间间隔同步和重新索引 ES 文档。

关于php - 无法将 mysql 时间戳映射到elasticsearch,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28433724/

33 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com