前缀搜索
# 前缀搜索
注意:
前缀搜索匹配的是trem,而不是filed,倒排索引的分词
性能比较差,没有缓存
搜索时尽量把前缀词设置长一点
GET /product/_search
{
"query": {
"prefix": {
"name": {
"value": "小米"
}
}
}
}
通配符
通配搜索匹配的是trem
GET /product/_search
{
"query": {
"wildcard": {
"name": {
"value": "耳*"
}
}
}
}
tags.keyword 匹配的是数组里单个词
GET /product/_search
{
"query": {
"wildcard": {
"tags.keyword": {
"value": "*比"
}
}
}
}
模糊查询
fuzzy 查询是不分词的
GET /product/_search
{
"query": {
"fuzzy": {
"name":{
"value": "耳耳机",
"fuzziness": 1 # 允许字符的容错个数
}
}
}
}
短语前缀查询
match_phrase_prefix 允许查询的最后一个分词做前缀匹配
max_expansions 可以限制匹配的最大此项,设置此值可以影响查询性能,同时也会影响查询结果
slop 分词可以移动的次数,分词移动后能匹配上都会出结果
GET /product/_search
{
"query": {
"match_phrase_prefix": {
"name":{
"query": "小米耳",
"max_expansions": 10,
"slop":2
}
}
}
}