gpt4 book ai didi

elasticsearch - 在没有时间的情况下在 ElasticSearch 中搜索日期字段值

转载 作者:行者123 更新时间:2023-11-29 02:48:20 24 4
gpt4 key购买 nike

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

"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为此,通过在 gte/lteformat 参数中使用相同的日期,您只指定日期部分(即省略时间部分)

{
"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 过滤器:

{
"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"
}
}
}
]
}
}
}
}

关于elasticsearch - 在没有时间的情况下在 ElasticSearch 中搜索日期字段值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31941295/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com