建立乙個測試索引
put /test_like1
, "name" : }},
"englishname" : }},
"msg" : }}
}}
}
插入一條測試資料
put /test_like1/_doc/1
前提是查詢的字段型別是string型別,對應es中的text,keyword(這種查詢方式會慢,查詢不進行分詞處理)
get /test_like1/_search
}}
get /test_like1/_search
}}get /test_like1/_search
}}
查詢name和msg欄位發現可以查詢出來,但是查詢num和englishname會發現查詢不出來資料。
這是因為es缺省會把中文進行單個字的分詞拆分,而對於英文和數字是基於空格進行拆分的,這顯然不符合我們對於mysql的like查詢,對此我們可以建立乙個分詞器來解決。
建立乙個帶分詞的索引
(es中的字段必須是text型別,因為要進行分詞處理)
put /test_like2
, "name" :
},"analyzer": "my_analyzer"
},"englishname" :
},"analyzer": "my_analyzer"
},"msg" :
},"analyzer": "my_analyzer"}}
},"settings":
},"tokenizer": }}
}}}
插入一條測試資料
put /test_like2/_doc/1
在進行測試查詢,發現可以查詢了
get /test_like2/_search
}}
es模糊查詢的問題
今天在遇到es查詢的時候,遇到了難點,花了半天才發現問題原因。需求是 es實現模糊查詢。相當於sql中的like 像 一樣。但是在開發過程中,我使用了各種分詞,各種查詢 總是實現不了。問題 比如 我查詢切片麵包可以查詢出來,但是我查詢切麵包就查詢不出來。原因是es預設採用了分詞機制,導致我查詢的時候...
mysql模糊查詢 MYSQL模糊查詢
mysql提供標準的sql模式匹配,以及一種基於象unix實用程式如vi grep和sed的擴充套件正規表示式模式匹配的格式。一 sql模式 sql的模式匹配允許你使用 匹配任何單個字元,而 匹配任意數目字元 包括零個字元 在 mysql中,sql的模式預設是忽略大小寫的。下面顯示一些例子。注意在你...
模糊查詢 es模糊查詢處理輸入的錯詞
使用者會經常不小心或者記不太清自己所要搜尋的詞,而導致在查詢過程中輸入一些錯字,這時通過elasticsearch的模糊查詢來處理輸入的錯字,非常有利於提高使用者的搜尋體驗。在查詢過程中,如果沒有使用模糊查詢,如果我輸入的詞中有錯詞,我們一般是很難通過匹配查詢到想要的結果。讓我們首先舉個例子,錯字 ...