【问题标题】:Search different date format in elastic search在弹性搜索中搜索不同的日期格式
【发布时间】:2024-06-29 17:40:02
【问题描述】:

我已经使用以下配置从我的 mysql 数据库中索引了一个日期列

                    mappings:
                    first_name: { boost: 5 , type: string, index: not_analyzed }
                    last_name: { boost: 5, type: string, index: not_analyzed}
                    id:
                        type: integer
                    date_create:
                        type: date
                        format: YYYY-MM-dd'T'HH:mm:ssZ

如何使用不同的日期格式查询弹性搜索? 例如当我搜索“10 月 1 日”或“10 月 1 日”时,任何以 2015-10-01 作为索引的项目都应该是可搜索的

有没有办法在弹性搜索中做到这一点,或者我必须在将日期传递给查找器之前对其进行格式化?

【问题讨论】:

    标签: symfony elasticsearch foselasticabundle


    【解决方案1】:

    您应该使用工具将用户输入转换为完整的 Date/DateTime/DateTimeOffset 对象。

    在 javascript 中 Moment 将是一个不错的选择。

    在 C# 中 DateTimeOffset.TryParse() 是你的朋友。

    无论您使用什么语言,我确信都有一个内置的日期转换库。

    【讨论】:

    • 啊,所以唯一的解决方案是在将其传递给 elasticsearch 之前将其设置为预定义格式?
    • 我认为这是最好的解决方案。分开你的顾虑。让 ES 做它最擅长的事情,不要让用户输入验证负担它。这应该在 UI 层而不是 repo/database 层上完成。