使用場景
需要智能分詞並模糊搜索的場景
ES和MySQL區別
-
ES是基於NoSQL非關係型數據庫來實現;MySQL是基於傳統RDBMS關係型數據庫來實現。
-
MySQL作爲開源關係型數據庫,應用範圍非常廣泛,非常適合於結構化數據存儲和查詢。在數據查詢場景下,默認返回所有滿足匹配條件的記錄;而ES作爲新生代NoSQL數據庫代表之一,非常適合於非結構化文檔類數據存儲、更創新支持智能分詞匹配模糊查詢。比如在電商網站商品搜索欄中,用戶輸入以空格爲分隔符的字符串(如:家電電視等),後臺ES數據庫搜索引擎會根據用戶輸入的信息,對數據庫中保存的非結構化數據進行分詞模糊匹配查詢,返回滿足匹配條件的前N條記錄給用戶;另外ES更典型應用在於根據用戶瀏覽記錄日誌來追蹤用戶行爲,智能推送用戶期望瀏覽的數據信息,此時通常藉助ELK三大組件互相配合完成。
-
關於如何在MySQL和ES之間做到合理技術選型,總結爲:如果業務數據爲結構化數據,同時不需要特別關注排名和智能分詞模糊匹配查詢等特性,則建議採用關係型數據庫如MySQL來作爲數據存儲介質並使用配套搜索引擎;反之,如果業務數據爲非結構化數據,同時更關注排名和需要智能分詞模糊匹配的特性,則建議採用非關係型數據庫如ES作爲數據存儲介質並使用配套搜索引擎。
安裝
官方安裝文檔 https://www.elastic.co/guide/en/elasticsearch/reference/current/docker.html#docker-cli-run
安裝環境
此次爲mac os10.14.5,linux或windows可參考官方文檔
首先,調出mac terminal命令行工具,輸入
screen ~/Library/Containers/com.docker.docker/Data/vms/0/tty
sysctl -w vm.max_map_count=262144
然後,執行安裝命令
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.2
docker run -p 9200:9200 -p 9300:9300 -d -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.2
測試
輸入
http://localhost:9200/
返回下邊內容則表示安裝成功
{
"name" : "qUBX3iQ",
"cluster_name" : "docker-cluster",
"cluster_uuid" : "zbvX-TzdQKStiC_k_rJAKw",
"version" : {
"number" : "6.3.2",
"build_flavor" : "default",
"build_type" : "tar",
"build_hash" : "053779d",
"build_date" : "2018-07-20T05:20:23.451332Z",
"build_snapshot" : false,
"lucene_version" : "7.3.1",
"minimum_wire_compatibility_version" : "5.6.0",
"minimum_index_compatibility_version" : "5.0.0"
},
"tagline" : "You Know, for Search"
}