上面这个查询返回以下结果集:

    因为match查询需要查询两个关键词:"brown""dog",在内部会执行两个term查询并综合二者的结果得到最终的结果。match的实现方式是将两个term查询放入一个bool查询,查询在之前的章节已经介绍过。

    重要的一点是,'title'字段包含至少一个查询关键字的文档都被认为是符合查询条件的。匹配的单词数越多,文档的相关度越高。

    match查询接受一个'operator'参数,默认值为or。如果要求所有查询关键字都匹配,可以更改参数值为and

    这个查询会排除文档1,因为文档1只包含了一个查询关键词。

    控制精度

    allany 之间的选择有点过于非黑即白。如果用户指定了5个查询关键字,而一个文档只包含了其中的4个?将设置为'and'会排除这个文档。

    match查询有'minimum_should_match'参数,参数值表示被视为相关的文档必须匹配的关键词个数。参数值可以设为整数,也可以设置为百分数。因为不能提前确定用户输入的查询关键词个数,使用百分数也很合理。

    'minimum_should_match'被设置为百分数时,查询进行如下:在上面的例子里,'75%'会被下舍为'66.6%',也就是2个关键词。不论参数值为多少,进入结果集的文档至少应匹配一个关键词。

    [提示]

    'minimum_should_match'参数很灵活,根据用户输入的关键词个数,可以采用不同的匹配规则。更详细的内容可以查看。