2017-12-20 24 views
0

Iam이 elasticsearch에서 필터로 결과를 수집하려고합니다. 필터를 추가 할 때 예기치 않은 결과가 발생합니다. (iam은 "예외"또는 "오류"라는 용어와 일치하는 결과 만 볼 것을 기대합니다).필터가 bool과 함께 작동하지 않음

아마도 필터를 잘못된 위치에 배치 했습니까?

{ 
    "query": { 
    "bool": { 
     "should": [ 
     { 
      "match": { 
      "message": "error" 
      } 
     }, 
     { 
      "match": { 
      "message": "exception" 
      } 
     } 
     ], 
     "must_not": { 
     "match": { 
      "message": "io.vertx.spi.cluster.zookeeper.ZookeeperClusterManager" 
     } 
     }, 
     "filter": [ 
     { 
      "range": { 
      "@timestamp": { 
       "gt": "now-1000m" 
      } 
      } 
     } 
     ] 
    } 
    } 
} 
+0

여기에 정보가 많지 않습니다. 예상치 못한 결과는 무엇입니까? –

+0

'@ timestamp'의 매핑과 "일치하지 않는"일치하는 문서의 예제를 보여줍니다. –

+0

''minimum_should_match ': 1' juste를'should'에 추가하면 어떻게됩니까? – Val

답변

0

문제가 있습니다.

절이 (쿼리) 일치하는 문서에 표시되어야한다. bool 쿼리가 쿼리 컨텍스트에 있고 must 또는 filter 절이 있으면 should 쿼리가 일치하지 않아도 문서가 bool 쿼리와 일치합니다. 이 경우이 절은 점수에 영향을주기 위해서만 사용됩니다. bool 쿼리가 필터 컨텍스트이거나 must 또는 filter가 아닌 경우 should 쿼리 중 하나 이상이 bool 쿼리와 일치하도록 문서와 일치해야합니다. 이 동작은 minimum_should_match 매개 변수의 설정에 의해 명시 적으로 제어 될 수 있습니다.