2016-05-11 2 views
0

Я пытаюсь создать функцию, которая возвращает мне счет событий с Elasticsearch.Elasticsearch QueryParsingException count query

Когда я запускаю этот код, он сначала поднимает 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) 

Это только часть файла, но эта часть не будет работать, и это сводит меня с ума.

Я не могу найти документацию для функции count elticearch.

Edit:

Здесь полное сообщение об исключении:

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

Что произойдет, если вы замените '' quere' с query'? – 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