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