它告诉我没有注册[custom_filters_score]的查询];
这是基本形式的代码:
"query": {
"custom_filters_score": {
"query": {
"match_all": {}
},
"filters": [
{
"filter": {
"exists": {
"field": "salesrank"
}
}
,"script": "1 / doc['salesrank'].value"
}
]
}
}
}
修改
我唯一注意到的工作是在第一个'查询'之后和'custom_filters_score'之前放置另一个查询。然后这给我留下了两个问题 - 不知道如何处理它们,但文档并没有说明这一点。 :(
我还必须摆脱'filters'数组,只使用'filter'对象。所以,我发现工作的唯一事情就是这样:
{
"query": {
"match_all": {},
"custom_filters_score": {
"query": {
"match_all": {}
},
"filter": {
"exists": {
"field": "salesrank"
}
,"script": "1 / doc['salesrank'].value"
}
}
}
}
答案 0 :(得分:0)
根据elasticsearch文档:http://www.elasticsearch.org/guide/en/elasticsearch/reference/0.90/query-dsl-custom-filters-score-query.html," custom_filters_score"已被弃用。正确的方法是用" function_score"
替换它{
"query": {
"function_score": {
"functions": [
{
"script_score": {
"script": "1 / doc['salesrank'].value"
}
}
],
"query": {
"match_all": {}
},
"filter": {
"exists": {
"field": "salesrank"
}
}
}
}
}