elasticsearch中忽略大小写模糊搜索实现
參考:https://www.phpmianshi.com/?id=255
背景
有時我們想cms搜索的時候更精準一點,可能會用到wildcard不分詞的模糊搜索,但是不分詞就有區(qū)分大小寫搜索的問題
?
解決方案
1.在es查詢時不區(qū)分大小寫,可以讓查詢更方便,具體設置如下:
?{
? ?"settings": {
? ? ? ?"analysis": {
? ? ? ? ? ?"analyzer": {
? ? ? ? ? ? ? ?"caseSensitive": {
? ? ? ? ? ? ? ? ? ?"filter": "lowercase",
? ? ? ? ? ? ? ? ? ?"type": "custom",
? ? ? ? ? ? ? ? ? ?"tokenizer": "keyword"
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ?}
? ?},
? ?"mappings": {
? ? ? ?"personInfo": {
? ? ? ? ? ?"properties": {
? ? ? ? ? ? ? ?"userName": {
? ? ? ? ? ? ? ? ? ?"type": "string",
? ? ? ? ? ? ? ? ? ?"analyzer": "caseSensitive",
? ? ? ? ? ? ? ? ? ?"search_analyzer": "caseSensitive"
? ? ? ? ? ? ? ?}
? ? ? ? ? ?}
? ? ? ?}
? ?}
}
設置完mappings后,在搜索的時候搜索的?userName 轉成小寫進行搜索
?{
? ?"query": {
? ? ? ?"wildcard": {
? ? ? ? ? ?"userName": "*zhangsan*"
? ? ? ?}
? ?}
}
這樣設置后就可以了。
?
2.當然也可以用should查詢,先同時查詢大寫和小寫的匹配
{"query":?{"bool"{"must":[{"bool":{"should":[{"wildcard":?{"userName":?"*zhangsan*"}},{"wildcard":?{"userName":?"*ZHANGSAN*"}}]}}???]}} }?
總結
以上是生活随笔為你收集整理的elasticsearch中忽略大小写模糊搜索实现的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 网智天元闪耀2021年(第六届)大数据产
- 下一篇: VisualNet地税管网综合资源管理系