【发布时间】:2016-10-10 08:41:13
【问题描述】:
我正在尝试使用包含范围的 OR 语句查询我的索引,为此我构建了以下查询(在文档的帮助下):
{
"query": {
"match_all": {}
},
"size": 50,
"filter": {
"or": [{
"term": {
"fromPlace": "liverpool"
},
"range" : {
"query" : {
"gte": "01/01/2012",
"lte": "2013",
"format": "dd/MM/yyyy||yyyy"
}
}
}]
}
}
然而,这给了我一个“查询格式错误,start_object 后没有字段”错误。完整的错误信息:
{
"error": {
"root_cause": [
{
"type": "query_parsing_exception",
"reason": "[_na] query malformed, no field after start_object",
"index": "quote-lanes2",
"line": 13,
"col": 15
}
],
"type": "search_phase_execution_exception",
"reason": "all shards failed",
"phase": "query",
"grouped": true,
"failed_shards": [
{
"shard": 0,
"index": "quote-lanes2",
"node": "opqibf4zRxOXTHz0QIAaeA",
"reason": {
"type": "query_parsing_exception",
"reason": "[_na] query malformed, no field after start_object",
"index": "quote-lanes2",
"line": 13,
"col": 15
}
}
]
},
"status": 400
}
有什么建议吗?还是对文档的详细说明? 提前谢谢各位!
编辑:
感谢@or-weinberger,因此查询已修复,但它实际上并没有过滤日期。我将“query”更改为“validFrom”,这样我的查询看起来像:
{
"size": 50,
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
"or": [
{
"term": {
"fromPlace": "liverpool"
}
},
{
"range": {
"validFrom": {
"gte": "2017-03-22T08:43:11",
"format": "strict_date_optional_time||epoch_millis"
}
}
}
]
}
}
}
}
GTE 显然是在未来,不应该匹配具有以下值的文档(但它确实如此):
理想情况下,我只想过滤“yyyy/mm/dddd”部分。 有什么想法吗?
【问题讨论】:
标签: date elasticsearch range