我有一个现有的索引abc_index
,其中包含title
description
字段。现在我已经将skill_ids
添加到索引中。下面是索引中的几个文档
skill_idsMap为keyword
| 文档ID|标题|描述|技能ID|
| - -----|- -----|- -----|- -----|
| before_skill_doc_1|人工智能|AI的dec| []|
| before_skill_doc_2| AI的力量|人工智能的力量|[]|
| after_skill_doc_1|标题与技能001|技能描述001| ["12345"]|
| after_skill_doc_2|技能002|技能描述002| ["12345"]|
现在,我希望skill_id为“12345”的文档(即文档after_skill_doc_1和after_skill_doc_2)应该出现在顶部,然后在下面的标题和描述中有“人工智能”的文档。
下面是查询
{
"query": {
"function_score": {
"query": {
"bool": {
"must": [
{
"bool": {
"should": [
{
"term": {
"skill_ids": {
"value": "12345",
"boost": 2.0
}
}
},
{
"multi_match": {
"query": "artificial intelligence",
"fields": [
"title^35",
"description^15"
],
"type": "phrase"
}
}
]
}
}
]
}
}
}
}
}
- 实际结果**-标题或描述中包含“人工智能”的文档排名第一。
- 预期结果**-匹配skill_ids的文档应被赋予最高优先级,然后显示标题或描述。
1条答案
按热度按时间dluptydi1#
我做了这个查询,我把boost 100放在skill_ids中。