2014-12-31 53 views
2

我正在使用基本的Elasticsearch排序腳本按質量對文檔進行排序。由於我們將質量存儲爲「低」,「中等」和「高」,因此它們不能用於基本排序,因爲它們的字母順序不同於它們的列舉順序。使用Elasticsearch中的doc值獲取因子對象的特定關鍵字

下面是我使用的腳本:

"sort":{ 
     "_script":{ 
     "script":"factor[doc['quality'].value]", 
     "type":"number", 
     "params":{ 
      "factor": { 
        "high": 2, 
        "med": 1, 
        "low": 0 
      } 
     }, 
     "order":"asc" 

} 

如果我更換doc['quality'].value'high'它工作得很好,所以似乎有接受DOC值作爲對象的關鍵問題。

任何有關爲什麼這將是不勝感激的洞察力。

我得到的錯誤如下:Elasticsearch的

[email protected]>]: Query Failed [Failed to execute main query]]; nested: NullPointerException; }]" 

回答

2

的默認語言是時髦,這是不是訪問一個地圖格式。 下面應該爲你

{ 
    "sort": { 
    "_script": { 
     "script": "factor.get(doc['quality'].value)", 
     "type": "number", 
     "params": { 
     "factor": { 
      "high": 2, 
      "med": 1, 
      "low": 0 
     } 
     }, 
     "order": "asc" 
    } 
    } 
} 

工作更多參考的話題,以及如何(1)elasticsearch腳本使用Groovy(2)你可以參考這些文獻12

+0

謝謝!我想我的語法不正確。我仍然是一個時髦的新手。 –