1.match_all 查询:
match_all
查询是一种简单的查询,匹配索引中的所有文档,无论文档中的字段内容如何。返回索引中的全部文档。eg:
{
"query": {
"match_all": {}
}
}
2.match 查询:
match
查询使用分析器来分词和处理查询字符串,match
很智能,会根据查询字段类型,采用不同的查询方式,比如:
查询的字段是日期或者数值类型的话,它会将你需要查询的内容转换为日期或者数值对待;
如果查询的内容是一个不能被分词的内容,
match
查询不会对指定的查询关键字进行分词;如果查询的类型是一个可以分词的内容,
match
会根据指定内容分词,到分词库中去匹配。由此看出
match
很智能,根据检索内容,能分就分,分不了就不分。
3.match_phrase 查询:
match_phrase
查询也用于在指定字段中搜索,但它要求查询字符串中的短语按照顺序完整匹配字段内容。不像match
查询,match_phrase
查询不会分词查询字符串,而是将整个查询字符串作为一个短语进行匹配。
示例:
-
创建索引
PUT /lfq_demo_personal
{
"mappings": {
"properties": {
"name": {
"type": "keyword"
},
"age": {
"type": "integer"
},
"birthday": {
"type": "date"
},
"hobby": {
"type": "text"
},
"ipaddress":{
"type":"ip"
}
}
}
}
-
添加数据
POST /lfq_demo_personal/_doc/2
{
"name":"理遇",
"age":24,
"birthday":"1999-05-28T11:13:16+08:00",
"hobby":"理遇热爱Java,喜欢打篮球",
"ipaddress":"2606:2800:220:1:248:1893:25c8:1946"
}
-
match
和match_all
查询
hobby 为
text
类型,所以可分词,输入: "理遇喜欢打篮球",match
可以匹配到,match_prase
匹配不到,结果如下:
-
match_prase
-
match
总结来说:
-
match_all
查询用于匹配所有文档。 -
match
查询用于搜索包含指定词汇的文档,根据类型分词或者不分词。文章来源:https://www.toymoban.com/news/detail-755802.html -
match_phrase
查询用于完整匹配指定短语,不分词,按照短语顺序匹配。文章来源地址https://www.toymoban.com/news/detail-755802.html
到了这里,关于ES-match_all、match和match_phrase的区别的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!