这是我参与8月更文挑战的第9天,活动详情查看:8月更文挑战
本Elasticsearch相关文章的版本为:7.4.2
返回与提供的文本、数字、日期或布尔值匹配的文档。注意点:在匹配之前根据所查询的字段调用此字段的analyzer进行分析提供的文本。
该match
查询是执行全文搜索的标准查询,包括用于模糊匹配的选项。
创建测试数据
POST /match_test/_doc/1
{
"my_text": "my Favorite food is cold porridge"
}
POST /match_test/_doc/2
{
"my_text": "when it's cold my favorite food is porridge"
}
复制代码
match查询例子
请求数据:
POST /match_test/_search
{
"query": {
"match": {
"my_text": "Favorite"
}
}
}
复制代码
相应数据:
{
"took" : 0,
"timed_out" : false,
"_shards" : {
"total" : 1,
"successful" : 1,
"skipped" : 0,
"failed" : 0
},
"hits" : {
"total" : {
"value" : 2,
"relation" : "eq"
},
"max_score" : 0.19363809,
"hits" : [
{
"_index" : "match_test",
"_type" : "_doc",
"_id" : "1",
"_score" : 0.19363809,
"_source" : {
"my_text" : "my Favorite food is cold porridge"
}
},
{
"_index" : "match_test",
"_type" : "_doc",
"_id" : "2",
"_score" : 0.17225473,
"_source" : {
"my_text" : "when it's cold my favorite food is porridge"
}
}
]
}
}
复制代码
因为match查询会对输入的数据进行分词处理,Favorite经过standard analyzer处理后就是favorite了,所以同时命中doc1和doc2。
match查询的参数
-
query
-
(必需)您希望在提供的
<field>
.在执行搜索之前,
match
查询会分析任何提供的文本。这意味着match
查询可以搜索text
“文本数据类型”分析标记的字段,而不是精确的术语。 -
analyzer
-
(可选,字符串)[分析器]用于将
query
值中的文本转换为标记。默认为field映射的[索引分析器]。如果没有映射分析器,则使用索引的默认分析器。 -
fuzziness
-
(可选,字符串)允许匹配的最大编辑距离。
-
max_expansions
-
(可选,整数)查询将扩展到的最大分词数。默认为
50
. -
prefix_length
-
(可选,整数)用于模糊匹配的起始字符数保持不变。默认为
0
. -
fuzzy_transpositions
-
(可选,布尔值)如果
true
,模糊匹配的编辑包括两个相邻字符的换位(ab → ba)。默认为true
. -
operator
-
(可选,字符串)用于解释
query
值中文本的布尔逻辑。有效值为:-
OR
(默认)例如,
query
值capital of Hungary
被解释为capital OR of OR Hungary
。 -
AND
例如,
query
值capital of Hungary
被解释为capital AND of AND Hungary
。
-
-
minimum_should_match
-
(可选,字符串)必须与要返回的文档匹配的最小子句数。