2016-10-27 4 views
-1
이 ES 2.0을 사용하여 예외를 throw 쿼리입니다

를 지원하지 않습니다?부울 쿼리 필터

쿼리 :

{ 
    "bool":{ 
     "must":[ 
     { 
      "bool":{ 
       "should":[ 
        { 
        "bool":{ 
         "must":[ 
          { 
           "range":{ 
           "startDate":{ 
            "lte":"2016-10-27T11:24:49.6616538+05:30" 
           } 
           } 
          } 
         ], 
         "filter":[ 
          { 
           "bool":{ 
           "must_not":[ 
            { 
             "exists":{ 
              "field":"endDate" 
             } 
            } 
           ] 
           } 
          } 
         ] 
        } 
        } 
       ] 
      } 
     } 
     ] 
    } 
} 

답변

1

음 우선, 그 오류가 Elasticsearch의 1.x의 버전에서 사용에서 일반적이다. (이 경우 FilteredQuery이 필요합니다.)

다음으로 불필요한 중첩 레벨이 여러 개있는 것 같습니다. 더 간단한 예를 만들기 위해 다른 것을 제거했다면 확실하지 않습니다. 당신이 ES 하나가 내 서버 (v2.3.1)에

{ 
    "query" : { 
     "bool" : { 
      "must" : [{ 
        "range" : { 
         "startDate" : { "lte" : "2016-10-27T11:24:49.6616538+05:30" } 
        } 
       } 
      ], 
      "filter" : [{ 
        "bool" : { 
         "must_not" : [{ 
           "exists" : { "field" : "endDate" } 
          } 
         ] 
        } 
       } 
      ]} } 
} 

모두 원래의 쿼리 및 내 다시 한 잘 작동 그래서 난 정말 같은데요 :이 같은 쿼리를 다시 작성 (및 외부 중괄호 추가) 한 .x? 또한

, 당신은 루씬 점수를 활용하고, 단지 문서를 반환 (또는 당신의 자신의 종류를 적용) 할 당신은 모두 필터를 삭제할 수 있습니다 추가를 단순화하지 않는 경우 :

{ 
    "query" : { 
     "bool" : { 
      "must" : [{ 
        "range" : { 
         "startDate" : { "lte" : "2016-10-27T11:24:49.6616538+05:30"} 
        } 
       } 
      ], 
      "must_not" : [{ 
        "exists" : { "field" : "endDate" } 
       } 
      ]} } 
}