0

python エラスティック検索クライアントを使用して、elasticsearch インデックスをクエリしています。クエリがどこで間違っているかを推測しようとしているため、私のインデックスは非常に小さいです。記入例はこちら

_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"
                }
            }
        }
    }
}

まだ運がありません。範囲クエリについては、このガイドに従うように最善を尽くしています。何が間違っているのかわかりません。助けてください。

更新:クエリから「フォーマット」を削除したため、次のようになりました。

   'query' : {
            'range' : {
                'Expiration' : {
                    'gte' : '20160215',
                    'lte' : '20160415',
                }
            }
        }

そして念願のエントリーを頂きました。しかし、なぜ「フォーマット」をパラメーターとして使用できないのですか?

4

0 に答える 0