Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/date/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Date Elasticsearch中的抽象时态搜索_Date_Datetime_<img Src="//i.stack.imgur.com/RUiNP.png" Height="16" Width="18" Alt="" Class="sponsor Tag Img">elasticsearch - Fatal编程技术网 elasticsearch,Date,Datetime,elasticsearch" /> elasticsearch,Date,Datetime,elasticsearch" />

Date Elasticsearch中的抽象时态搜索

Date Elasticsearch中的抽象时态搜索,date,datetime,elasticsearch,Date,Datetime,elasticsearch,我很难找到解决这个问题的最佳方法,可能需要一些外界的意见。在我的ES数据中,我有过去~100年的新闻文章。我正试图找出按日期属性而不是日期范围搜索文章的最佳方法。以下是一些示例: 获取“在这一天”的文章,例如4月15日,不管是哪一年 搜索在特定时间(如上午9点至下午5点)或一周中的某几天(如周六和周日)撰写的文章 搜索在6月、7月和8月期间撰写的文章(同样,不考虑年份) 。。。等等我提出的最佳解决方案是将这些属性分别存储在索引中,例如 { "publish_date": { "f

我很难找到解决这个问题的最佳方法,可能需要一些外界的意见。在我的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字段,每个ES字段都有自己的映射
  • 为要执行的每个日期映射定义这样的ES字段:

Hey@Geert Jan,感谢您的回复!我对我拥有的东西并不感到兴奋,因为它需要大量额外的存储空间,而且不灵活(例如,假设我想搜索一些未存储的属性,我必须用新地图重新索引所有数据)。我希望其他人能想出更好的解决办法。关于你的第二点,我没有想到要使用各种各样的日期格式——谢谢!这将是一个值得欢迎的进步。我最初拒绝为此使用多字段,但现在回想起来,它们会更好。多谢!