【问题标题】:Elasticsearch query only year with a custom date formatElasticsearch 仅查询具有自定义日期格式的年份
【发布时间】:2019-01-10 14:10:34
【问题描述】:

鉴于我有如下索引映射

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 不关心并且不会抛出异常,因为它应该使用所有日期类型

【问题讨论】:

    标签: elasticsearch


    【解决方案1】:

    我认为range query 是您正在寻找的。我自己没有使用过,所以我不能确定语法,但应该可以使用以下内容:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-06-18
      • 1970-01-01
      • 2016-05-10
      • 2013-09-01
      • 2019-11-09
      • 2021-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多