0
我有存儲用戶知道的技巧文件:ElasticSearch:如何在子組中查詢?
{
"size": 1000,
"query": {
"function_score": {
"query": {
"bool": {
"should": [
{
"query_string": {
"query": "Objective-C",
"default_field": "user.skill.name"
}
},
{
"range": {
"user.skill.weight_relative": {
"gte": 1
}
}
},
{
"range": {
"user.skill.weight_absolute": {
"gte": 1
}
}
},
...
問題我遇到的是ElasticSearch將返回用戶,例如,skill.name == Objective-C
但權重爲0的相對和絕對的,也用戶的分數超過1,但skill.name是完全不同的東西。
有沒有什麼辦法可以告訴彈性,我不希望這些搜索是「本地」範圍的?我不知道這個場景的名字。對不起,如果我沒有正確地調用它。
我正在運行的查詢還具有自定義_score功能,該功能可爲具有第三個指標(不包括與其無關的指標)的用戶提供更高的分數。可能是因爲這種自定義分數功能?可能會給「錯誤」的用戶一個更高的分數,因爲第三個指標高於具有所需技能和水平的用戶?
謝謝。
我完全不理解你的問題,但它看起來像你想'必須'的條款,而不是'應該' – 2015-02-09 17:28:46
請記住'應該'條款可以被認爲是一個布爾'OR'而不是'AND',這更多是'必須'實現的) - 我認爲默認情況下,任何滿足這些條件之一(並且可以是任何一個)的文檔都會匹配,儘管這個要求可以通過'minimum_should_match'明確指定。 http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-bool-query.html – rchang 2015-02-09 20:09:18
嗨,大家好,謝謝你的回覆。它不能成爲'必須',因爲'應該'條件只是爲了增加分數。設想一個用戶在技能上的重量爲0,它仍然應該出現,但較低。 – Topikito 2015-02-10 09:29:17