2014-05-16 64 views
0

我有這種類型的工作elasticsearch排序不partial_fields

"filter": { 
     "partial_fields": { 
      "fields": { 
       "exclude": [ 
        "field5*" 
       ] 
      } 
     } 
    } 

問題是,如果partial_fields設置那種不工作..有一個理由爲了這 ?或者我該如何刪除partial_fields才能進行排序工作?

這裏是整個查詢:

{ 
"size": 10, 
"query": { 
    "filtered": { 
     "query": { 
      "bool": { 
       "should": [ 
        { 
         "text": { 
          "name_en": { 
           "query": "testing", 
           "operator": "or", 
           "boost": 20 
          } 
         } 
        } 
       ] 
      } 
     }, 
     "filter": { 
      "and": [ 
       { 
        "term": { 
         "_type": "test" 
        } 
       } 
      ] 
     } 
    }, 
    "filter": { 
     "partial_fields": { 
      "fields": { 
       "exclude": [ 
        "field2*" 
       ] 
      } 
     } 
    } 
}, 
"sort": [ 
    { 
     "_script": { 
      "script": "return doc.score*1000 + doc['field2'].value", 
      "type": "number", 
      "order": "asc" 
     } 
    } 
] 
} 

感謝。

回答

1

根據documentation for partial fields,我沒有看到該用法被嵌套在JSON請求中的filter節點下。我認爲這可能是你的問題,請嘗試移動partial_fields部分達到同一水平sort類似如下:

{ 
"size": 10, 
"query": { 
    "filtered": { 
     "query": { 
      "bool": { 
       "should": [ 
        { 
         "text": { 
          "name_en": { 
           "query": "testing", 
           "operator": "or", 
           "boost": 20 
          } 
         } 
        } 
       ] 
      } 
     }, 
     "filter": { 
      "and": [ 
       { 
        "term": { 
         "_type": "test" 
        } 
       } 
      ] 
     } 
    }  
}, 
"partial_fields": { 
     "fields": { 
      "exclude": [ 
       "field2*" 
      ] 
     } 
}, 
"sort": [ 
    { 
     "_script": { 
      "script": "return doc.score*1000 + doc['field2'].value", 
      "type": "number", 
      "order": "asc" 
     } 
    } 
] 
} 
+0

感謝。你是絕對正確的 ! –