说我有一个包含3个文本字段的文档:field_a,field_b和field_c。 是否可以执行单个查询,以便我们按以下顺序获得结果:
“ mutli_match”结果可以将来自不同字段的结果按结果顺序混合在一起,我想要的是field_a的所有结果,然后是field_b的所有结果,依此类推。
答案 0 :(得分:1)
尽管如此,我仍然普遍认为这种方法很奇怪(我认为应该以不同的方式解决您遇到的问题,例如多个搜索阶段),我认为您现在可以通过以下方式解决它。
多重匹配查询具有provide boost到您的字段的完美功能。例如
"query": {
"multi_match" : {
"query" : "this is a test",
"fields" : [ "field_a^1000", "field_b^10", "field_c" ]
}
}
符号^
是一个升压符号,它将使该字段中的匹配分数乘以值-在field_a
情况下为1000
但是,我建议通常避免这种行为,因为:
在某些情况下可能无法达到预期的效果(假设您在field_b
中获得了1000分)
如果您的匹配次数很高,那么整个匹配field_c
的想法就会过时,因为没有用户会在搜索结果中滚动那么远