在ElasticSearch中搜索没有时间的日期字段值

2024-04-25

我的数据中有一个日期字段为

"type": "date",
"format": "dateOptionalTime"

现在我的日期字段和值是 -

"INITIAL_EXTRACT_DATE" : "2015-04-02T06:47:57.78+05:30"

在搜索时,我仅根据“2015-04-02”日期进行搜索。 但我得到 0 结果。

任何人都可以建议如何搜索确切的日期并且是任何日期。

现在我正在尝试这个 -

确切日期 -

"term": {
          "IH_PT_DSC": {
             "value": "2015-04-02"
          }
       }

对于任何日期 -

"terms": {
         "IH_PT_DSC": [
            "2015-04-02",
            "2015-04-03",
            "2015-04-03"
         ]
      }

您可以使用range filter https://www.elastic.co/guide/en/elasticsearch/reference/current/query-dsl-range-filter.html为此,通过使用相同的日期gte / lte and a format仅指定日期部分的参数(即省略时间部分)

{
    "constant_score": {
        "filter": {
            "range" : {
                "IH_PT_DSC" : {
                    "gte": "2015-04-02",
                    "lte": "2015-04-02",
                    "format": "yyyy-MM-dd"
                }
            }
        }
    }
}

如果您需要指定多个日期,也可以轻松完成。

{
    "constant_score": {
        "filter": {
            "range" : {
                "IH_PT_DSC" : {
                    "gte": "2015-04-01",
                    "lte": "2015-04-03",
                    "format": "yyyy-MM-dd"
                }
            }
        }
    }
}

最后,如果您需要查询不相交的日期间隔,只需使用bool/should filter:

{
  "constant_score": {
    "filter": {
      "bool": {
        "should": [
          {
            "range": {                    <--- interval 1
              "IH_PT_DSC": {
                "gte": "2015-04-01",
                "lte": "2015-04-03",
                "format": "yyyy-MM-dd"
              }
            }
          },
          {
            "range": {                    <--- interval 2
              "IH_PT_DSC": {
                "gte": "2015-04-05",
                "lte": "2015-04-08",
                "format": "yyyy-MM-dd"
              }
            }
          },
          {
            "range": {                    <--- interval 3
              "IH_PT_DSC": {
                "gte": "2015-04-10",
                "lte": "2015-04-12",
                "format": "yyyy-MM-dd"
              }
            }
          }
        ]
      }
    }
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

在ElasticSearch中搜索没有时间的日期字段值 的相关文章

随机推荐