0
我有一个Elasticsearch映射,其中包含语言代码的字段,例如, EN,DE,ES,FR等。如果用户开始使用英文搜索,我想提高搜索结果中的所有英文文档;法语,西班牙语,德语等相同基于doc字段的字符串值在Elasticsearch中提升结果
我猜,script_score
是要走的路:
"script_score" : {
"script" : "_score * doc['my_numeric_field'].value"
}
不过,我需要比较每个语言代码索引文件。有LANG
作为用户的当前语言的代码,这可能是这样的:
"script_score" : {
"script" : "_score * ("+LANG+" == doc['lang'].value ? 2 : 1)"
}
这里的本质将是一个三元运算符一样,为了提高在文档中的问题与两个因素的情况下,其语言匹配当前用户的语言:
LANG == doc['lang'] ? 2 : 1
到目前为止,任何这样的功能都被ES忽略。
工程就像一个魅力,谢谢乘以分数。我必须首先在ES配置文件中启用脚本:'script.groovy.sandbox.enabled:on' –