我正在使用python elastic search client来查询我的弹性搜索索引。我的索引非常小,因为我试图推断出我的查询出错的地方。这是一个示例条目
_source: {
Expiration: 20160115
}
和另一个
_source: {
Expiration: 20160215
}
和另一个
_source: {
Expiration: 20160315
}
基本上,今年每个月的15日都是。
这是我的查询/请求
try:
results = client.search(
body = {
'query' : {
'range' : {
'Expiration' : {
'gte' : '2015',
'lte' : '2017',
'format' : 'yyyy'
}
}
}
},
index = 'test-index'
)
except Exception as e:
import pdb
pdb.set_trace()
当我不可避免地遇到异常中的断点时,异常如下。
RequestError(400, u'SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[xPPw7B5wTUu50pxUGxFGIQ][test-index][0]: RemoteTransportException[[guts_search_dev2][inet[/158.171.65.122:9301]][search/phase/query]]; nested: SearchParseException[[test-index][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [{"query": {"range": {"Expiration": {"gte": "2015", "lte": "2017", "format": "yyyy"}}}}]]]; nested: QueryParsingException[[test-index] [range] query does not support [format]]; }{[cCrh939sR7yHdKgawRi6Sw][test-index][1]: SearchParseException[[test-index][1]: from[-1],size[-1]: Parse Failure [Failed to parse source [{"query": {"range": {"Expiration": {"gte": "2015", "lte": "2017", "format": "yyyy"}}}}]]]; nested: QueryParsingException[[test-index] [range] query does not support [format]]; }]', {u'status': 400, u'error': u'SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[xPPw7B5wTUu50pxUGxFGIQ][test-index][0]: RemoteTransportException[[guts_search_dev2][inet[/158.171.65.122:9301]][search/phase/query]]; nested: SearchParseException[[test-index][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [{"query": {"range": {"Expiration": {"gte": "2015", "lte": "2017", "format": "yyyy"}}}}]]]; nested: QueryParsingException[[test-index] [range] query does not support [format]]; }{[cCrh939sR7yHdKgawRi6Sw][test-index][1]: SearchParseException[[test-index][1]: from[-1],size[-1]: Parse Failure [Failed to parse source [{"query": {"range": {"Expiration": {"gte": "2015", "lte": "2017", "format": "yyyy"}}}}]]]; nested: QueryParsingException[[test-index] [range] query does not support [format]]; }]'})
关于“查询不支持[格式]”的内容似乎是一个常见的字符串。
我认为这可能与我最初映射索引的方式有关,因此我删除并重新映射如下。
{
"test-index" : {
"mappings" : {
"properties" : {
"Expiration" : {
"type" : "date",
"format" : "yyyy"
}
}
}
}
}
仍然没有运气。我正在努力按照this guide进行范围查询。我不知道我做错了什么。请帮忙。
更新:我从查询中删除了“格式”,现在它看起来像这样。
'query' : {
'range' : {
'Expiration' : {
'gte' : '20160215',
'lte' : '20160415',
}
}
}
我得到了所需的条目。但为什么我不能将“格式”用作参数?