2015-10-22 33 views
-1

基本上我想基于某些字段进行自定义脚本排序。他们的领域可能因不同的标准而有所不同在我们启用动态脚本之前,这样就没问题了,因为我可以在我身边更改关键字。但是现在只允许通过文件脚本。 这是我的查询:elasticsearch使用自定义字段名称的脚本

curl -XPOST localhost:9200/_search -d '{ 
    "query": { 
    "function_score": { 
     "query": { 
     ... 
     }, 
     "functions": [ 
     { 
      "script_score": { 
      "file": "myFile", 
      } 
     } 
     ] 
    } 
    } 
}' 

文件看起来像:

doc["keyword1"].value > 5 ? 5 : doc["keyword1"].value 

虽然我可以建立不同的查询(使用不同的文件存在)基于关键字的名称。我想知道我们是否真的可以将关键字作为参数传递,以便不需要在脚本/文件夹下存储多个文件。

谢谢。

回答

0

是的,这是可能的。脚本文件应该是这样的:

doc[some_param].value > 5 ? 5 : doc[some_param].value 

和你这样的查询:

"functions": [ 
    { 
     "script_score": { 
     "file": "test", 
     "params": { 
      "some_param": "keyword1" 
     } 
     } 
    } 
    ] 
相关问题