在Elasticsearch中还涉及到一种查询就是multi_match查询。在日常编写代码的时候,我们使用master或者should会比较多,但是我们也可以尝试下使用multi_match进行简写操作。这样子用起来也比较方便。
multi_match搜索主要是指定搜索的关键词和指定在哪些字段里面进行搜索即可,这样在elasticsearch中,他会自动把这里的搜索条件解析成一个个match操作。这个主要是用于编写搜索条件很方便而已。下面举个例子:
这里我们还是使用前面介绍的test索引做演示。
一、先看下test索引的数据
二、使用multi_match搜索下
post /test/_search { "query": { "multi_match": { "query": "doing", "fields": ["description", "title"], "tie_breaker": 0.3, "type": "best_fields" } } }
可以看到搜索出来了结果,这里解释下相关的查询字段:
1、query 这个字段主要是我们想要搜索的内容,主要填写的是关键词 2、fields 这是一个数组结构,主要是指明在哪些字段里面进行搜索 3、tie_breaker 这是一个0-1之间的分值,它的含义是在原来的搜索基础上打出来的分值 * 这里的分值作为最后的分值进行返回。 4、type 这里指的是字段信息,有3种模式,分别是:best_fields(最佳字段)、most_fields(最多字段)、cross_fields(跨字段),这里默认是最佳字段,官网的文档也没有介绍太多另外两个字段,所以另外两个字段我也没有用过。一般默认最佳字段即可
备注:
1、在使用multi_match查询的时候,主要是作为一种请求参数的简写方案,具体实际情况视实际情况而定。
2、在使用multi_match查询的时候,可以直接为每一个字段添加一个权重,例如:
"description^0.5"
这里添加权重会在后面详细介绍,这里仅介绍使用multi_match查询的方便之处。
还没有评论,来说两句吧...