本文共 979 字,大约阅读时间需要 3 分钟。
1.对于前缀的匹配搜索:
GET /forum/article/_search{ "query": { "prefix": { "articleID": { "value": "J" } } }}
prefix的匹配一般是处理不分词的场景,将会匹配articleID中以”J”开头的doc。prefix不会计算revelance score,只是作一个过滤的操作,和filter唯一的区别是filter会缓存结果,而prefix不会。前缀越短要处理的doc越多,性能越差。
2.对于通配符的搜索:
GET /forum/article/_search{ "query": { "wildcard": { "content": { "value": "*k" } } }}
?会匹配任意字符,*会匹配0个或多个字符。性能根prefix一样差,必须要扫描整个倒排索引。
3.对于正则的搜索:
GET /forum/article/_search{ "query": { "regexp":{ "content":"thi[n]." } }}
[0-9]:指定范围内的数字
[a-z]:指定范围内的字幕 .:一个字符 +:前面的正则表达式可以出现一次或多次正则的搜索同样会扫描全表,性能也会很差
4.对于模糊搜索:
GET /forum/article/_search{ "query": { "fuzzy": { "author_first_name": { "value": "tony", "fuzziness": 2 } } }}
fuzziness参数调整纠正的次数
通常不会直接用上述搜索,而会用下面的搜索:
GET /forum/article/_search{ "query": { "match": { "author_first_name": { "query": "tonyn", "fuzziness": "AUTO", "operator": "and" } } }}
转载地址:http://fqrgi.baihongyu.com/