2016-05-11 21 views
0

私はElasticsearchでイベントのカウントを返す関数を作成しようとしています。Elasticsearch QueryParsingException countクエリ

このコードを実行すると、最初にBroadcastShardOperationFailedExceptionになり、次にQueryParsingExceptionがネストされます。

しかし、私の質問には何か間違っていますが、私はそれが何であるかは分かりません。ここに私の質問があります:

esclient = Elasticsearch() 

countParams['body'] = {} 
countParams['body']['query']= {} 
countParams['body']['query']['filtered']= {} 
countParams['body']['query']['filtered']['filter']= {} 
countParams['body']['query']['filtered']['filter']['or']={} 

toadd['term'] = {} 
toadd['term']['log_device_id']= id["ID"] 
countParams['body']['query']['filtered']['filter']['or']= toadd 
countResponse = esclient.count(index='indexName', 
           doc_type='event', 
           body=countParams) 

これはファイルの一部ですが、この部分はうまく動作せず、私を狂ってしまいます。

私はElasticsearchのカウント関数に関する文書は見つかりません。

編集:ここでは完全な例外メッセージ

:助けを

GET /indexName/event/_count [status:400 request:0.007s] 
TransportError(400, '{"count":0,"_shards": {"total":5,"successful":0,"failed":5,"failures": [{"index":"IndexName","shard":0,"reason":"BroadcastShardOperationFailedException[[logappclient1][0] ]; nested: QueryParsingException[[indexName] [filtered] query does not support [term]]; "},{"index":"indexName","shard":1,"reason":"BroadcastShardOperationFailedException[[indexName][1] ]; nested: QueryParsingException[[indexName] [filtered] query does not support [term]]; "},{"index":"indexName","shard":2,"reason":"BroadcastShardOperationFailedException[[indexName][2] ]; nested: QueryParsingException[[indexName] [filtered] query does not support [term]]; "},{"index":"indexName","shard":3,"reason":"BroadcastShardOperationFailedException[[indexName][3] ]; nested: QueryParsingException[[indexName] [filtered] query does not support [term]]; "},{"index":"indexName","shard":4,"reason":"BroadcastShardOperationFailedException[[logappclient1][4] ]; nested: QueryParsingException[[indexName] [filtered] query does not support [term]]; "}]}}') 

どうもありがとう!

+0

あなたは 'query'と' quere'を交換する場合はどうなりますか? – Val

+0

チップのおかげで、それは愚かな間違いです。しかし何も変わりません。例外は同じままです – Melody

+0

あなたはあなたが得る完全な例外であなたの質問を更新できますか? – Val

答えて

1

は次のように試してみてください:

esclient = Elasticsearch() 

countParams = { 
    'query': { 
     'filtered': { 
     'filter': { 
      'or': [ 
       { 
       'term': { 
        'log_device_id': id["ID"] 
       } 
       } 
      ] 
     } 
     } 
    } 
} 

countResponse = esclient.count(index='indexName', 
           doc_type='event', 
           body=countParams) 
+0

私はこれを試してみましたが、何も変わりませんでした。私は同じエラーメッセージになります。 – Melody

+0

私はちょうど修正しました、もう一度試してください – Val

+0

それは動作します!これは完璧です!どうもありがとうございました! – Melody