2015-05-21 99 views
8

我的查询是这样的:Elasticsearch条款过滤器加注 “过滤器不支持[mediatest]”

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

它提升一个QueryParsingException [comos_v2] [条款]过滤器不支持[mediaType的] ],其中字段“mediaType”在映射中完全不存在。 我的问题是为什么术语筛选器不会引发异常?

回答

16

以上不是有效的查询DSL。在上述Terms filter的值“mediaType的”字段应该是一个数组

它应该是以下几点:

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

我知道了!非常感谢。 –

+0

只是为了澄清:不应该纠正的查询使用值为“mediaType”而不是“term”的“terms”过滤器? –

+0

@BrandonBrown您的权利编辑了答案感谢指出 – keety