2017-01-23 70 views
1

我正在嘗試在我的一個應用程序中使用以下無痛腳本查詢,但似乎沒有工作。語法的任何問題?我注意到這部分不真正工作的是這個Math.max(doc["level"].value, 1) - 1。請注意,「id」字段是關鍵字,「level」是字節。ElasticSearch無痛腳本不工作

{script: {script: { 
     inline: 'doc["id"].value == params.parentDocIds[Math.max(doc["level"].value, 1) - 1]', 
     params: {parentDocIds: parentDocIds} 
}}} 

謝謝!

+0

對此問題的任何更新?我也在苦苦掙扎。使用內聯的一件事是使用ctx,所以不知道它應該是ctx.doc [「id」] ... –

+0

無痛似乎是類型敏感的,所以我鑄造了從Math.max返回的值,如下所示:(int )Math.max(doc [「level」]。value – geeko

+0

您可以指定索引的映射和此查詢的目的嗎? –

回答

0

以下查詢將起作用。 更改索引名稱以匹配您的索引並在Kibana中嘗試。

GET todo-index-name-here/_search 
{ 
    "query": { 
    "script": { 
     "script": { 
     "inline": "def idx = (int)Math.max(doc['level'].value, 1) - 1; return (doc['id'].value == params.parentDocIds[idx])", 
     "lang": "painless", 
     "params": { 
      "parentDocIds": [ 
      "x", 
      "y", 
      "z" 
      ] 
     } 
     } 
    } 
    } 
}