Elasticsearch中的抽象时态搜索



我很难想出解决这个问题的最佳方法,可能会使用一些外部意见。在我的ES数据中,我有过去100年的新闻文章。我正试图找出根据日期属性而不是日期范围搜索文章的最佳方法。以下是一些例子:

  • 获取"在这一天"的文章,例如4月15日,无论年份如何
  • 搜索在特定时间(如上午9点至下午5点)或一周中的几天(如周六和周日)之间撰写的文章
  • 搜索6月、7月和8月期间写的文章(同样,不考虑年份)

等等。我想出的最好的解决方案是将这些属性单独存储在索引中,例如

{
  "publish_date": {
    "full": "2014-04-15 12:34:56",
    "year": 2014,
    "month": 4,
    "monthname": "april",
    "day": 15,
    "dayofweek": "tuesday",
    "dayofyear": 105,
    "hour": 12,
    "minute": 34,
    "second": 56,
    "week": 16
  }
}

我对这个解决方案不满意,我想放弃它。

你有没有想过你会采取什么不同的做法,或者你会如何解决这个问题?

谢谢!

首先,你为什么对此不满意?它非常好,符合在ES(和其他非规范化/nosql数据库)中进行文档建模时可能需要开始戴的"非规范化"帽子

话虽如此,您不需要在自己的索引代码中编写不同的字段。相反,你可以选择:

  • 使用多字段,这允许将一个输入字段索引到多个ES字段,每个字段都有自己的映射。http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-core-types.html#_multi_fields_3
  • 为要执行的每个日期映射定义这样一个ES字段:http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/mapping-date-format.html

相关内容

  • 没有找到相关文章

最新更新