大家,我使用的是elasticsearch版本1.1.1,我已经正确验证了版本。在elasticsearch文档中,有一个函数得分查询,它提供了一个名为field_value_factor的函数,但是当我尝试使用它时,我收到了这个错误:
nested: QueryParsingException[[teindex] No function with the name [field_value_factor] is registered.]
以下是我使用它的方式:
"function_score": {
"functions": [
{
"gauss": {
"createVendor": {
"scale": "2d",
"offset": "5d",
"decay" : 0.5
}
}
},
{
"field_value_factor": {
"field" : "ipscore",
"modifier" : "log"
}
}
],
"query": {
"multi_match": {
"query": "beach",
"fields": ["title^12","description^5","tags^8" ]
}
},
"score_mode": "multiply"
}
有关失败原因的任何线索?感谢。
答案 0 :(得分:4)
我一直有同样的问题。正如@Thorsten所建议的那样,我可以确认这在v1.1.1中绝对没有(在编写本文时是官方存储库中的最新版本)。它看起来像是在v1.2.0中......希望如此。
你现在可以尝试这样的事情:
"function_score": {
"functions": [
{
"gauss": {
"createVendor": {
"scale": "2d",
"offset": "5d",
"decay" : 0.5
}
}
},
{
"script_score": {
"script": "_score * log(doc['ipscore'].value)"
}
}
],
"query": {
"multi_match": {
"query": "beach",
"fields": ["title^12","description^5","tags^8" ]
}
},
"score_mode": "multiply"
}
答案 1 :(得分:0)
自2014年5月22日发布的Elasticsearch 1.2.0版以来,字段价值因素似乎可用:
https://www.elastic.co/blog/elasticsearch-1-2-0-released
因此升级到该版本或更高版本应该可以解决问题。