2017-03-06 99 views
1

我有以下查詢:嵌套查詢不支持濾鏡

{ 
    "query": { 
    "filtered": { 
     "query": { 
     "bool": { 
      "should": [ 
      { 
       "wildcard": { 
       "translations.title": { 
        "value": "*abc*", 
        "boost": 2 
       } 
       } 
      }, 
      { 
       "wildcard": { 
       "translations.subtitle": { 
        "value": "*abc*", 
        "boost": 1.9 
       } 
       } 
      }, 
      { 
       "match": { 
       "translations.title": { 
        "query": "abc", 
        "fuzziness": 5 
       } 
       } 
      }, 
      { 
       "match": { 
       "translations.subtitle": { 
        "query": "abc", 
        "fuzziness": 5 
       } 
       } 
      }, 
      { 
       "wildcard": { 
       "series.translations.title": { 
        "value": "*abc*", 
        "boost": 0.5 
       } 
       } 
      }, 
      { 
       "wildcard": { 
       "translations.subtitle": { 
        "value": "*abc*", 
        "boost": 0.5 
       } 
       } 
      }, 
      { 
       "wildcard": { 
       "tags.text": { 
        "value": "*abc*", 
        "boost": 1.5 
       } 
       } 
      }, 
      { 
       "match": { 
       "tags.text": { 
        "query": "abc", 
        "fuzziness": 5 
       } 
       } 
      }, 
      { 
       "wildcard": { 
       "translations.content": { 
        "value": "*abc*" 
       } 
       } 
      } 
      ] 
     } 
     }, 
     "filter": { 
     "and": [ 
      { 
      "term": { 
       "type": "video" 
      } 
      }, 
      { 
      "term": { 
       "videoType": "brightcove" 
      } 
      }, 
      { 
      "type": { 
       "value": "post-en" 
      } 
      }, 
      { 
      "term": { 
       "isPublished": true 
      } 
      }, 
      { 
      "term": { 
       "status": "published" 
      } 
      }, 
      { 
      "term": { 
       "CategoryId": "4" 
      } 
      }, 
      { 
      "range": { 
       "contentDuration": { 
       "from": "300001" 
       } 
      } 
      }, 
      { 
      "nested": { 
       "path": "languages", 
       "filters": { 
       "term": { 
        "languages.id": "148" 
       } 
       } 
      } 
      } 
     ] 
     } 
    } 
    }, 
    "size": 20, 
    "from": 0, 
} 

並返回錯誤:

"error": { 
    "root_cause": [ 
     { 
     "type": "query_parsing_exception", 
     "reason": "[nested] query does not support [filters]", 
     "index": "nowness", 
     "line": 1, 
     "col": 1003 
     } 
    ], 
    "type": "search_phase_execution_exception", 
    "reason": "all shards failed", 
    "phase": "query_fetch", 
    "grouped": true, 
    "failed_shards": [ 
     { 
     "shard": 0, 
     "index": "nowness", 
     "node": "Wuh8rSunQ5mdAa2j-RYOBA", 
     "reason": { 
      "type": "query_parsing_exception", 
      "reason": "[nested] query does not support [filters]", 
      "index": "nowness", 
      "line": 1, 
      "col": 1003 
     } 
     } 
    ] 
    } 
} 

它抱怨這個片段:

{ 
      "nested": { 
       "path": "languages", 
       "filters": { 
       "term": { 
        "languages.id": "148" 
       } 
       } 
      } 
      } 

它用來工作,但它並不在最新的ES版本中。我如何改變這個查詢來使它工作?

回答

1

從ES2.0,The nested filter has been replaced by the Nested Query。它在「查詢上下文」中表現爲查詢,在「過濾器上下文」中表現爲過濾器。

您通過@paqash 或

指定既可以通過查詢篩選文件
{ 
    "nested" : { 
     "path" : "languages", 
     "query": { 
     "bool": { 
      "filter": [ 
      { "term": { "languages.id": "148" }} 
      ] 
     } 
     } 
    } 
} 

我沒有測試它自己,而是應該按照documentation on query clauses in filter context

Use query clauses in query context for conditions which should affect the score of matching documents (i.e. how well does the document match), and use all other query clauses in filter context.

+0

這將會是工作如果他們會在次要版本更新之間留下至少一個該死的東西相同的話,那就太棒了。 –