Muk*_*esh 6 elasticsearch elasticsearch-net
我的数据中有一个日期字段
"type": "date",
"format": "dateOptionalTime"
Run Code Online (Sandbox Code Playgroud)
现在我的日期字段和值是 -
"INITIAL_EXTRACT_DATE" : "2015-04-02T06:47:57.78+05:30"
Run Code Online (Sandbox Code Playgroud)
在搜索时我只根据"2015-04-02"的日期进行搜索.但我得到0结果.
任何人都可以建议如何搜索确切的日期,是任何日期.
现在我正在尝试这个 -
确切日期 -
"term": {
"IH_PT_DSC": {
"value": "2015-04-02"
}
}
Run Code Online (Sandbox Code Playgroud)
对于任何日期 -
"terms": {
"IH_PT_DSC": [
"2015-04-02",
"2015-04-03",
"2015-04-03"
]
}
Run Code Online (Sandbox Code Playgroud)
您可以为此使用range过滤器gte,通过在/中使用相同的日期lte和format仅指定日期部分的参数(即省略时间部分)
{
"constant_score": {
"filter": {
"range" : {
"IH_PT_DSC" : {
"gte": "2015-04-02",
"lte": "2015-04-02",
"format": "yyyy-MM-dd"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
如果您需要指定多个日期,也可以轻松完成。
{
"constant_score": {
"filter": {
"range" : {
"IH_PT_DSC" : {
"gte": "2015-04-01",
"lte": "2015-04-03",
"format": "yyyy-MM-dd"
}
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
最后,如果您需要查询不相交的日期间隔,只需使用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"
}
}
}
]
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5418 次 |
| 最近记录: |