说明
相当于 sql 中的 like 模糊查询
通配符
?代表任意一个字符,相当于 SQL 中的_*代表任意多个字符,包括一个空字符,相当于 SQL 中的%
注意
适用
keyword类型的字段,区分大小写也可以用于
text类型,但模糊查询中文 会有问题为了防止极慢的通配符查询,不应以通配符
*或?开头
例子
比如在搜索 店名、人名,一般这类名字都不是 日常的 词,如:史珍香同学
GET /toutiao_v1/_search
{
"query":{
"wildcard":{
"author":"李*"
}
}
}
GET /meituan_v1/_search
{
"query": {
"wildcard": {
"name": {
"value": "*拉面*"
}
}
}
}
text类型有多个单词的问题
wildcard模糊查询 text 类型的字段,查询条件有 多个单词,会查询不到
GET /toutiao_v1/_search
{
"query":{
"wildcard":{
"title":"JAVA mysql*"
}
}
}
当有2个单词时,查询不到
可以通过 keyword子类型 模糊查询
GET /toutiao_v1/_search
{
"query":{
"wildcard":{
"title.keyword":"JAVA mysql*"
}
}
}
可以查询到
text类型有多个汉字的问题
wildcard模糊查询 text 类型的字段,查询条件有 多个汉字,会查询不到
get /toutiao_v1/_search
{
"query":{
"wildcard":{
"title":"*技巧*"
}
}
}
当有2个以上汉字时,查询不到
查询条件有1个汉字可以查询
get /toutiao_v1/_search
{
"query":{
"wildcard":{
"title":"*技*"
}
}
}
可以查询到结果
可以通过 keyword子类型 模糊查询
GET /toutiao_v1/_search
{
"query": {
"wildcard": {
"title.keyword": "*技巧*"
}
}
}