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