Parsing 查询在ES(v0.90.3)中工作,但不在任何其他版本中工作。目前正在试用(v1.2.1)
日志:Parsing 查询在ES(v0.90.3)中工作,但不在任何其他版本中工作。目前正在试用(v1.2.1),parsing,elasticsearch,Parsing,elasticsearch,日志: Query : [ {"query": {"custom_score": {"filter": {"prefix": {"user_account.account_number": "670" } }, "query": {"filtered": {"query": {"match_all":[] }, "filter": {"and"
Query :
[
{"query":
{"custom_score":
{"filter":
{"prefix":
{"user_account.account_number":
"670"
}
},
"query":
{"filtered":
{"query":
{"match_all":[]
},
"filter":
{"and":
[{"term":
{"user_account.account_id":1
}
},
{"term":
{"user_account.type":"super"
}
}
]
}
}
},
"script":"random()"
}
},
"from":0,"size":1
}
]
新版本中不推荐使用自定义分数。使用函数分数查询而不是自定义分数 自定义分数查询
SearchPhaseExecutionException[Failed to execute phase [query], all shards failed; shardFailures {[iPTJT-rkQ2uCfxcC7DmmXg][xpay][2]: SearchParseException[[user][2]: from[-1],size[-1]: Parse Failure [Failed to parse source [[{"query":{"custom_score":{"filter":{"prefix":{"user_account.account_number":"670"}},"query":{"filtered":{"query":{"match_all":[]},"filter":{"and":[{"term":{"user_account.account_id":1}},{"term":{"user_account.type":"i"}}]}}},"script":"random()"}},"from":0,"size":1}]]]]; nested: ElasticsearchParseException[Expected START_OBJECT but got START_ARRAY null]; }{[iPTJT-rkQ2uCfxcC7DmmXg][xpay][3]: SearchParseException[[xpay][3]: from[-1],size[-1]: Parse Failure [Failed to parse source [[{"query":{"custom_score":{"filter":{"prefix":{"user_account.account_number":"670"}},"query":{"filtered":{"query":{"match_all":[]},"filter":{"and":[{"term":{"user_account.account_id":1}},{"term":{"user_account.type":"i"}}]}}},"script":"random()"}},"from":0,"size":1}]]]]; nested: ElasticsearchParseException[Expected START_OBJECT but got START_ARRAY null]; }{[iPTJT-rkQ2uCfxcC7DmmXg][xpay][0]: SearchParseException[[xpay][0]: from[-1],size[-1]: Parse Failure [Failed to parse source [[{"query":{"custom_score":{"filter":{"prefix":{"user_account.account_number":"670"}},"query":{"filtered":{"query":{"match_all":[]},"filter":{"and":[{"term":{"user_account.account_id":1}},{"term":{"user_account.type":"i"}}]}}},"script":"random()"}},"from":0,"size":1}]]]]; nested: ElasticsearchParseException[Expected START_OBJECT but got START_ARRAY null]; }{[iPTJT-rkQ2uCfxcC7DmmXg][xpay][1]: SearchParseException[[xpay][1]: from[-1],size[-1]: Parse Failure [Failed to parse source [[{"query":{"custom_score":{"filter":{"prefix":{"user_account.account_number":"670"}},"query":{"filtered":{"query":{"match_all":[]},"filter":{"and":[{"term":{"user_account.account_id":1}},{"term":{"user_account.type":"super"}}]}}},"script":"random()"}},"from":0,"size":1}]]]]; nested: ElasticsearchParseException[Expected START_OBJECT but got START_ARRAY null]; }]
变成
"custom_score": {
"params": {
"param1": 2,
"param2": 3.1
},
"query": {...},
"script": "_score * doc['my_numeric_field'].value / pow(param1, param2)"
}
尝试将
的“match_all”:[]
替换为的“match_all”:{}
为什么将查询包装在数组中?
"function_score": {
"boost_mode": "replace",
"query": {...},
"script_score": {
"params": {
"param1": 2,
"param2": 3.1
},
"script": "_score * doc['my_numeric_field'].value / pow(param1, param2)"
}
}