Elasticsearch仅查询具有自定义日期格式的年份

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Elasticsearch仅查询具有自定义日期格式的年份相关的知识,希望对你有一定的参考价值。

鉴于我有一个索引映射如下

PUT my_index
{
  "mappings": {
    "_doc": {
      "properties": {
        "date": {
          "type": "date",
          "format": "yyyy-MM-dd||yyyy||yyyy-MM"
        }
      }
    }
  }
}

这意味着我可以将文档放在所有允许的日期类型中,如果我确保所有文档都支持日期格式yyyy-MM-dd我想使用匹配查询来允许我搜索不同类型,例如提供文档字段日期如下doc1 - 日期:2016-1-1 doc2 - 日期:2017-1-4 doc3 - 日期:2016-2-1

我希望能够使用匹配仅提供2016年的查询并返回doc2和doc3,我也希望能够使用2016-1进行搜索,目前elasticsearch不关心并且不会抛出任何异常,因为它应该使用所有日期类型

答案

我认为range query就是你要找的东西。我自己没有使用它,所以我不能肯定地说出语法,但是类似下面的内容应该有效:

{
  "query": {
    "range" : {
      "born" : {
        "gte": "2016",
        "lte": "2016",
        "format": "yyyy-MM-dd||yyyy||yyyy-MM"
      }
    }
  }
}

早期版本使用范围过滤器而不是查询,但如果您使用的是5.x或更高版本,则应该可以使用范围查询。

以上是关于Elasticsearch仅查询具有自定义日期格式的年份的主要内容,如果未能解决你的问题,请参考以下文章

查询日期数组以仅显示未来事件 - PHP

django rest框架列表查询自定义json数组结果响应,因为日期格式

从纪元时间戳列中仅检索具有今天日期的记录

ElasticSearch 7.x mapping 定义说明

Azure 表存储 - 查询时间戳

熊猫仅分箱时间列而不是自定义范围中的日期[重复]