范围查询格式不正确? (Elasticsearch)

时间:2016-05-09 22:55:36

标签: python elasticsearch dsl elasticsearch-py range-query

我正在使用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',
                }
            }
        }

我得到了所需的条目。但为什么我不能将“格式”用作参数?

0 个答案:

没有答案