我正在尝试创建一个执行以下操作的弹性搜索查询:
文档包含ID列表(["id1", "id2", "id2"]
)。我有另一个ID列表,我想显示其中任何ID与此列表匹配的文档,并在更多文档的ID与提供的列表匹配时进行提升。
我使用条款查询如下:
"query": {
"bool": {
"must": {
"terms": {
"ids": ["id1", "id2", "id3"],
"boost": 10
}
}
}
}
这样可以正确过滤掉没有ids
匹配id1, id2, or id3
的文档,但它会为任何具有任意数量的匹配ID的文档提供相同的_score
。因此,如果文档具有ids: ["id1", "id4"]
,则其得分与具有ids: ["id1", "id2", "id3"
]的文档相同。
有没有人知道根据elasticsearch中交叉数组元素的数量正确提升这类术语查询的方法?