Node.js 功能评分不适用于节点js
我在elasticsearch中遇到了函数评分问题。当我试图从nodejs运行函数评分查询时,它总是给我错误信息Node.js 功能评分不适用于节点js,node.js,
elasticsearch,Node.js,
elasticsearch,我在elasticsearch中遇到了函数评分问题。当我试图从nodejs运行函数评分查询时,它总是给我错误信息 Trace: [illegal_argument_exception] request [/_search] contains unrecognized parameter: [query] at Logger.trace (/Users/rajeshjain/projects/search/logger.js:39:42) at elasticClient.inst
Trace: [illegal_argument_exception] request [/_search] contains unrecognized parameter: [query]
at Logger.trace (/Users/rajeshjain/projects/search/logger.js:39:42)
at elasticClient.instance.search.then.catch.e (/Users/rajeshjain/projects/search/search/disc_cube_topic.js:117:28)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
试图运行它的节点js代码是
elasticClient.instance.search(query).then(eres => {
// 3. reformat elasticsearch response and send to client.
let response = {
total: eres.hits.total,
extracted: eres.hits.hits.length,
results: []
};
elasticHitResult4DiscoverableTopicCubes(eres.hits.hits).then(results => {
response.results = results;
res.status(200).send(response);
});
})
它似乎给了我与函数查询使用的查询相关的错误…而当我在kibana上运行相同的查询时..它给了我适当的结果。我自己解决了这个问题。区别是..来自nodejs的搜索api expect body作为请求的一部分..我在与原始的json有问题
{
"from": "0",
"size": "20",
"body": {
"query": {
"function_score": {
"query": {
"multi_match": {
"query": "Devel",
"analyzer": "standard",
"fields": [
"topic_name",
"cube_name"
]
}
},
"script_score": {
"script": {
"source": "Math.log1p(10*doc['num_cube_members'].value + 5*doc['message_count'].value + doc['num_topic_members'].value)"
}
}
}
}
}
}虽然回答自己的问题很好,但你应该把它作为一个很好的答案,并解释更改内容和其他相关细节。事实上,很难很快看出它有什么不同。
{
"from": "0",
"size": "20",
"body": {
"query": {
"function_score": {
"query": {
"multi_match": {
"query": "Devel",
"analyzer": "standard",
"fields": [
"topic_name",
"cube_name"
]
}
},
"script_score": {
"script": {
"source": "Math.log1p(10*doc['num_cube_members'].value + 5*doc['message_count'].value + doc['num_topic_members'].value)"
}
}
}
}
}