Date Elasticsearch或与日期范围组合的术语
我试图用包含范围的OR语句查询我的索引,为此,我构造了以下查询(在文档的帮助下): 然而,这给了我一个“查询格式错误,启动\u对象后没有字段”错误。完整的错误消息:Date Elasticsearch或与日期范围组合的术语,date,
elasticsearch,range,Date,
elasticsearch,Range,我试图用包含范围的OR语句查询我的索引,为此,我构造了以下查询(在文档的帮助下): 然而,这给了我一个“查询格式错误,启动\u对象后没有字段”错误。完整的错误消息: { "error": { "root_cause": [ { "type": "query_parsing_exception", "reason": "[_na] query malformed, no field after 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
}
有什么建议吗?还是对文档进行详细说明?
提前谢谢各位
编辑:
因此,由于的原因,查询得到了修复,但实际上它并没有按日期过滤。我将“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/ddddd”部分进行过滤。
有什么想法吗?您的查询确实格式不正确,筛选器应位于
bool
元素下,该元素应位于query
元素下。此外,当使用或/和时,您应该为每个过滤器元素(范围/术语等)创建单独的对象,例如:
{
"size": 50,
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
"or": [
{
"term": {
"fromPlace": "liverpool"
}
},
{
"range": {
"query": {
"gte": "01/01/2012",
"lte": "2013",
"format": "dd/MM/yyyy||yyyy"
}
}
}
]
}
}
}
}
您的查询确实格式不正确,筛选器应位于bool
元素下,该元素应位于query
元素下。此外,当使用或/和时,您应该为每个过滤器元素(范围/术语等)创建单独的对象,例如:
{
"size": 50,
"query": {
"bool": {
"must": {
"match_all": {}
},
"filter": {
"or": [
{
"term": {
"fromPlace": "liverpool"
}
},
{
"range": {
"query": {
"gte": "01/01/2012",
"lte": "2013",
"format": "dd/MM/yyyy||yyyy"
}
}
}
]
}
}
}
}
谢谢,我不知道bool的事情:)所以如果我想在字段“validFrom”上应用范围,我将“query”改为“validFrom”,对吗?这会产生0个结果,可能是因为我的日期格式不同,对吗?我得到了“2015-07-22T08:43:11”,我尝试将格式选项设置为yyyy-MM-dd h:MM tt,但没有成功。tt明显无效。然后,我尝试将其更改为:“yyyy/MM/dd HH:MM:ss”,但这似乎并没有实际应用过滤器。因此我尝试了:“格式”:“严格的日期可选时间”似乎有效,但不知何故“gte”:“2017-03-22T08:43:11”也与“有效时间”匹配:“2015-07-22T08:43:11”。。。。mmmm映射为日期的字段是否有效?请转到/\u映射
端点进行检查。好吧。。。。提名我为旅鼠奖。。。。。哈哈,我真的不记得那句话了……)谢谢你,伙计!谢谢,我不知道bool的事情:)所以如果我想在字段“validFrom”上应用范围,我将“query”改为“validFrom”,对吗?这会产生0个结果,可能是因为我的日期格式不同,对吗?我得到了“2015-07-22T08:43:11”,我尝试将格式选项设置为yyyy-MM-dd h:MM tt,但没有成功。tt明显无效。然后,我尝试将其更改为:“yyyy/MM/dd HH:MM:ss”,但这似乎并没有实际应用过滤器。因此我尝试了:“格式”:“严格的日期可选时间”似乎有效,但不知何故“gte”:“2017-03-22T08:43:11”也与“有效时间”匹配:“2015-07-22T08:43:11”。。。。mmmm映射为日期的字段是否有效?请转到/\u映射
端点进行检查。好吧。。。。提名我为旅鼠奖。。。。。哈哈,我真的不记得那句话了……)谢谢你,伙计!