2015-05-21 13 views
8

moje zapytanie jest tak:Elasticsearch podbicie terminy Filtr "filtr nie obsługuje [mediatest]"

{ 
    "query": { 
    "filtered": { 
     "filter": { 
     "bool": { 
      "must": [ 
      { 
       "term": { 
       "online": 1 
       } 
      }, 
      { 
       "terms": { 
       "mediaType": "flash" 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 

to podnieść QueryParsingException [[comos_v2] [Warunki] filtr nie obsługuje [MediaType] ], którego pole "mediaType" dokładnie nie istnieje w odwzorowaniu. moje pytanie brzmi, dlaczego filtr termin nie podnosi wyjątku?

Odpowiedz

16

Powyższe nie jest prawidłowym zapytaniem DSL. W powyższych Terms filter wartości do „MediaType” pole powinno być tablicą

To powinno być następujące:

{ 
    "query": { 
    "filtered": { 
     "filter": { 
     "bool": { 
      "must": [ 
      { 
       "term": { 
       "online": 1 
       } 
      }, 
      { 
       "terms": { 
       "mediaType": ["flash"] 
       } 
      } 
      ] 
     } 
     } 
    } 
    } 
} 
+0

mam go! Dziękuję bardzo. –

+0

Wystarczy wyjaśnić: czy poprawione zapytanie nie powinno korzystać z filtru "terms" z wartością "mediaType" zamiast "term"? –

+0

@BrandonBrown twoja prawica zredagowali odpowiedź, dziękując za wskazanie – keety