2013-09-28 2 views
1

count 쿼리를 수행하여 지난 10 분 이내에 시스템에 로그인하는 데 실패한 시도 횟수를 반환하려고합니다.Elasticsearch에서 범위 및 용어로 계산하기

{ 
    "term": { 
    "success":false 
    }, 
    "range": { 
    "_timestamp": { 
     "gt": "now-10m" 
    } 
    } 
} 

그러나,이 모든 시간 동안 성공하지 못한 시도를 모두 반환 내 쿼리에서 range 필터를 무시 :이 쿼리를 만들었습니다. 이 쿼리를 올바르게 구성하고 있습니까? 용어 및 범위가 search 인 경우 쿼리가 작동합니다.

즉, 위의 쿼리와 curl -XGET localhost:9200/application/_count의 출력은 같습니다 (필자는 실패한 시도 만 테스트했습니다). range

답변

0

는 필터, 그래서 나는 당신이 계정에 제대로을 위해 filtered 쿼리를 만들 수 있다고 생각 :

{ 
    "filtered": { 
    "query": { 
     "term": { 
     "success":false 
     }, 
    }, 
    "filter: { 
     "range": { 
     "_timestamp": { 
      "gt": "now-10m" 
     } 
     } 
    } 
    } 
} 
+0

이 작동 여전히 나에게의 출력을 제공하지 않는'수 : 4'를, 같은 로컬 호스트'에'GET' 요청으로 : 9200/application/_count' – josh

+0

알았어. 'range '는 필터 일뿐입니다. 필터링 된 쿼리를 사용해야합니다. 나는 나의 대답을 업데이트 할 것이다. – mguillermin

+0

같은 문제는 ... :(필자의 매개 변수를 사용하여'search' 쿼리 중에 올바른 결과를 성공적으로 얻을 수 있었지만'count'는이를 받아 들일 수 없으며 만기 후에 만 ​​나타납니다. – josh

관련 문제