100字范文,内容丰富有趣,生活中的好帮手!
100字范文 > Elasticsearch学习--查询(prefix wildcard regexp fuzzy)

Elasticsearch学习--查询(prefix wildcard regexp fuzzy)

时间:2024-06-10 16:27:20

相关推荐

Elasticsearch学习--查询(prefix wildcard regexp fuzzy)

一、前缀搜索 prefix

不计算相关度评分性能较差前缀搜索匹配的是分词后的词项前缀搜索没有缓存前缀搜索尽可能把前缀长度设置的更长

GET product/_search{"query": {"fuzzy": {"name": {"value": "product1"}}}}

index_prefixes为词项创建倒排索引,

比如computer这个单词,本身是一个词项,index_prefixes可以为这个单词再创建倒排索引,min_chars=2,max_chars=5的话,创建的索引:co、com、comp、compu

PUT prefixindex{"mappings": {"properties": {"name": {"type": "text","analyzer": "ik_max_word","index_prefixes": {"min_chars": 2,"max_chars": 3}}}}}

优缺点:

优点:加快前缀索引的搜索效率

缺点:占用内存、空间

二、通配符 wildcard

匹配的也是分词后的词项term

# 造数据PUT testindex/_doc/1{"name":"zhang san"}PUT testindex/_doc/2{"name":"zhang si"}PUT testindex/_doc/3{"name":"zhuang san"}PUT testindex/_doc/4{"name":"zhuang si"}

# 用法GET testindex/_search{"query": {"wildcard": {"name": {"value": "*san"}}}}

* 数组中的每个值都是精准值

三、正则 regexp

1. 用法

GET testindex/_search{"query": {"regexp": {"name": ".*san"}}}

2. flags参数含义

四、模糊查询 fuzzy

1. 情况

1)混淆字符(box->fox)

2) 缺少字符(black->lack)

3) 多出字符(sic -> sick

4) 颠倒次序(act->cat)

2. 用法

GET testindex/_search{"query": {"fuzzy": {"name": "xiaolahu"}}}

3. 参数

编辑距离:把字符改成正确的,需要挪到的次数

GET testindex/_search{"query": {"fuzzy": {"name": {"value": "xiaoloahu","fuzziness": 1,"transpositions":false}}}}

fuzziness, 默认是auto,根据字符串长度,从0,1,2取值

4. match查询也支持fuzziness

GET testindex/_search{"query": {"match": {"name": {"query":"xiaoloahu","fuzziness": 1}}}}

match是分词的,fuzzy是不分词的

fuzzy不适合数据量大时使用

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。