Elasticsearch是一個基於Apache Lucene(TM)的開源搜索引擎。不管在開源仍是專有領域,Lucene能夠被認爲是迄今爲止最早進、性能最好的、功能最全的搜索引擎庫。可是,Lucene只是一個庫。想要使用它,你必須使用Java來做爲開發語言並將其直接集成到你的應用中,更糟糕的是,Lucene很是複雜,你須要深刻了解檢索的相關知識來理解它是如何工做的。Elasticsearch也使用Java開發並使用Lucene做爲其核心來實現全部索引和搜索的功能,可是它的目的是經過簡單的RESTful API來隱藏Lucene的複雜性,從而讓全文搜索變得簡單。html
不過,Elasticsearch不單單是Lucene和全文搜索,咱們還能這樣去描述它:node
-分佈式的實時文件存儲,每一個字段都被索引並可被搜索 -分佈式的實時分析搜索引擎 -能夠擴展到上百臺服務器,處理PB級結構化或非結構化數據
並且,全部的這些功能被集成到一個服務裏面,你的應用能夠經過簡單的RESTful API、各類語言的客戶端甚至命令行與之交互。web
ElasticSearch-head 是一個web端的ElasticSearch管理工具。docker
1.docker拉取Elasticsearch鏡像跨域
https://www.docker.elastic.co/ 選擇適用的版本。這裏選擇6.3.2瀏覽器
docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.2
若是docker pull error,請添加國內鏡像加速源,參考:http://www.javashuo.com/article/p-hjkpulhp-ko.htmlbash
1 # 拉取鏡像 2 [root@localhost ~]# docker pull docker.elastic.co/elasticsearch/elasticsearch:6.3.2 3 6.3.2: Pulling from elasticsearch/elasticsearch 4 7dc0dca2b151: Pull complete 5 72d60ff53590: Pull complete 6 ca55c9f7cc1f: Pull complete 7 822d6592a660: Pull complete 8 22eceb1ece84: Pull complete 9 30e73cf19e42: Pull complete 10 f05e800ca884: Pull complete 11 3e6ee2f75301: Pull complete 12 Digest: sha256:8f06aecf7227dbc67ee62d8d05db680f8a29d0296ecd74c60d21f1fe665e04b0 13 Status: Downloaded newer image for docker.elastic.co/elasticsearch/elasticsearch:6.3.2 14 # 查看鏡像 15 [root@localhost ~]# docker images 16 REPOSITORY TAG IMAGE ID CREATED SIZE 17 docker.elastic.co/elasticsearch/elasticsearch 6.3.2 96dd1575de0f 14 months ago 826MB
2.運行容器服務器
docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.2
-p 9200 9300:映射虛擬機端口到宿主機端口app
9200 http協議,爲elasticsearch默認端口,用於外部通信。cors
9300 tcp協議,用於集羣之間通訊。.
-e 設置elasticsearch爲單節點啓動
1 # 啓動容器 2 [root@localhost ~]# docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:6.3.2 3 af895f4ddc62a981c72217f547a2a67fea9695b5b113c4317a1965cc76153bd4 4 # 查看容器 5 [root@localhost ~]# docker ps 6 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 7 af895f4ddc62 docker.elastic.co/elasticsearch/elasticsearch:6.3.2 "/usr/local/bin/dock…" 4 seconds ago Up 3 seconds 0.0.0.0:9200->9200/tcp, 0.0.0.0:9300->9300/tcp es
3.設置跨域
1 # 進入es容器,es爲容器的name,bash爲命令行 2 [root@localhost ~]# docker exec -it es bash 3 # 查看文件 4 [root@af895f4ddc62 elasticsearch]# ls 5 LICENSE.txt README.textile config lib modules 6 NOTICE.txt bin data logs plugins 7 # 進入elasticsearch的配置文件夾 8 [root@af895f4ddc62 elasticsearch]# cd config 9 [root@af895f4ddc62 config]# ls 10 elasticsearch.keystore ingest-geoip log4j2.properties roles.yml users_roles 11 elasticsearch.yml jvm.options role_mapping.yml users 12 # 修改elasticsearch的配置文件 13 [root@af895f4ddc62 config]# vi elasticsearch.yml 14 # 增長跨域配置 15 http.cors.enabled: true 16 http.cors.allow-origin: "*" 17 # :wq保存 18 # exit退出容器 19 [root@af895f4ddc62 config]# exit 20 exit 21 # 重啓es容器 22 [root@localhost ~]# docker restart es 23 es
# curl "http://localhost:9200" { "name" : "rSLhlFi", "cluster_name" : "docker-cluster", "cluster_uuid" : "QTLXwiz_Sx-udJAofc2RIQ", "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" }
1.docker search elasticsearch-head搜索鏡像
2.拉取 mobz/elasticsearch-head 鏡像
3.運行容器
因爲我宿主機9100端口被佔用,因此這裏將容器的9100端口映射到宿主機的9000端口
4.訪問elasticsearch-head