ES模糊查詢來對應mysql的like查詢

2022-08-23 08:00:15 字數 1066 閱讀 6518

建立乙個測試索引

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的模糊查詢來處理輸入的錯字,非常有利於提高使用者的搜尋體驗。在查詢過程中,如果沒有使用模糊查詢,如果我輸入的詞中有錯詞,我們一般是很難通過匹配查詢到想要的結果。讓我們首先舉個例子,錯字 ...