本文针对Elasticsearch 6.1版本。
Wildcard 搜索
类似于MySQL的模糊搜索,适用于string类型,占位符有两个:
?:匹配一个字符;*:匹配多个字符。
查询时用wildcard关键字搜索,如:
{
"query": {
"bool": {
"must": [
{
"wildcard": {
"title": "Z*"
}
}
]
}
}
}
禁止分词
Elasticsearch搜索时会对文档和搜索词进行分词,有时这不符合我们的需求,因为分词以后搜出来的结果可能多了或者少了,一些特殊的符号比如标点符号也会搜不到了。
- 禁止文档分词:设置文档的字段类型为
keyword; - 禁止搜索词分词:在字段名后面加上
.keyword,如上文把title改为title.keyword。
注意
在搜索词前面加?或*,会导致搜索的效率降低。