2012-10-26 108 views
3

我想要在彈性搜索中檢查自定義得分腳本中是否存在字段。Elasticsearch自定義評分腳本 - 檢查字段是否存在?

該搜索的工作原理:

{ 
    "query": { 
    "custom_score": { 
     "script": "((doc['region'].value == '1') ? 1 : 0)", 
     "query": { 
     "constant_score": { 
      "filter": { 
      "and": [ 
       { 
       "term": { 
        "id": "100" 
       } 
       } 
      ] 
      } 
     } 
     } 
    } 
    }, 
    "size": 1 
} 

它將得分結果作爲1,如果該區域的字段值是1。

但此查詢將不起作用:它不會進球的文檔1,如果該地區字段不會在文檔中存在:

{ 
    "query": { 
    "custom_score": { 
     "script": "((doc['region'].value == null) ? 1 : 0)", 
     "query": { 
     "constant_score": { 
      "filter": { 
      "and": [ 
       { 
       "term": { 
        "id": "100" 
       } 
       } 
      ] 
      } 
     } 
     } 
    } 
    }, 
    "size": 1 
} 

如何檢查在腳本中遺漏值?

回答

14

如果此字段包含數字類型,其中包含索引爲long的日期,則缺少的值由0表示。

+0

不幸的是,該字段是日期類型。 – user697547

+0

這是一回事。我已經更新了答案。 – imotov

+0

謝謝!有用! – user697547

相關問題