有个人长的像洋葱,走着走着就哭了…….

elasticsearch 怎么实现模糊匹配

Elasticsearch | 作者 owen | 发布于2016年03月30日 | 阅读数:33242

需求:能通过%内容%(左右模糊) 内容%(右模糊) %内容(左模糊) 三种方式来查询结果

咨询了一些人得到一些方案:
1、通过通配符,这种效率比较低下,我们这种场景比较多 数据也很多
2、ngram分词器实现每个字的分词,这种只能实现%内容%(左右模糊),不能左模糊或者右模糊

有人有这种场景和解决方案吗?
已邀请:

tianzhaixing - 80后IT男

赞同来自: laoyang360

qq123 - 90后IT精英

赞同来自:

QueryBuilders.queryStringQuery("dd").field("分词字段") 左右模糊
 QueryBuilders.prefixQuery("列名","dd")前缀查询 左模糊

zhc_hnust - 明湖樵夫

赞同来自:

API中有个QueryBuilder qb = QueryBuilders.fuzzyQuery("name", "kimzhy");好像可以实现

flowbywind - IT

赞同来自:

我找到了一个方式 ,通过match_phrase查询,在discover页面,添加过滤器 输入如下方式查询即可
{
  "query": {
    "match_phrase": {
      "message": "获取系统配置"
    }
  }
}
中文分词查询.png

 

hubiao

赞同来自:

请问你现在找到好的方式了吗?

yyfelastic - 90后 php

赞同来自:

当多个字段使用模糊查询,如何操作?

xiaorong

赞同来自:

{"query":{
"wildcard": { "fileldname": "*"+keyword+"*" }
}}
fieldname:表示你要搜索的列 keyword是匹配关键字
*表示匹配任意多个字符 ?表示匹配任意字符
 

要回复问题请先登录注册