elasticsearch multi_match vs应该

tru*_*nnh 5 elasticsearch

有人可以告诉我

"query": {
    "bool": {
        "should": [
            { "match": {"title": keyword} },
            { "match": {"description": keyword} }
        ]
    }
Run Code Online (Sandbox Code Playgroud)

"query": {
        "multi_match": {
            "query": keyword,
            "fields": [ "title", "description" ]
        }
    }
Run Code Online (Sandbox Code Playgroud)

如果选择以上两种方法之一,性能会有所提高吗?

Mar*_*cco 6

取决于您的multi_match. 在您的示例中,由于您没有指定类型,因此使用best_fields 。这利用了Dis Max 查询,基本上

使用最佳字段的 _score

另一方面,你的例子should

合并每个字段的_score。

它相当于most_fieldsmulti_match类型